Package org.pirkaengine.core.expression

Source Code of org.pirkaengine.core.expression.ExpressionEngineTest

package org.pirkaengine.core.expression;

import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
import static org.pirkaengine.core.TestUtil.*;

import java.util.ArrayList;
import java.util.HashMap;

import junit.framework.Assert;

import org.junit.Before;
import org.junit.Test;
import org.pirkaengine.core.Category;
import org.pirkaengine.core.Item;
import org.pirkaengine.core.expression.EvalException;
import org.pirkaengine.core.expression.ExpressionEngine;

public class ExpressionEngineTest {

    private ExpressionEngine target;

    @Before
    public void setup() {
        target = new ExpressionEngine();
    }

    @Test(expected = IllegalArgumentException.class)
    public void eval_null() {
        target.eval(null);
    }

    @Test(expected = IllegalArgumentException.class)
    public void eval_nullModel() {
        target.eval("", null);
    }

    @Test
    public void eval_empty_expression() {
        Assert.assertEquals("", target.eval(""));
    }

    @Test
    public void eval_single_value() {
        HashMap<String, Object> model = getModel("title", "タイトル");
        Assert.assertEquals("タイトル", target.eval("title", model));
    }

    @Test
    public void eval_getter() {
        Category category = new Category();
        category.id = 10;
        Item item = new Item();
        item.name = "名称";
        item.category = category;
        HashMap<String, Object> model = getModel("item", item);
        Assert.assertEquals("名称", target.eval("item.name", model));
        Assert.assertEquals("10", target.eval("item.category.id", model));
    }

    @Test
    public void eval_getter_null() {
        Item item = new Item();
        HashMap<String, Object> model = getModel("item", item);
        Assert.assertEquals("", target.eval("item.nullValue", model));
    }

    @Test
    public void eval_public_property() {
        Item item = new Item();
        item.price = 3500;
        HashMap<String, Object> model = getModel("item", item);
        Assert.assertEquals("3,500", target.eval("item.labeledPrice", model));
    }

    @Test
    public void eval_public_property_null() {
        Item item = new Item();
        item.name = null;
        HashMap<String, Object> model = getModel("item", item);
        Assert.assertEquals("", target.eval("item.name", model));
    }

    @Test
    public void eval_public_method() {
        Item item = new Item();
        item.id = 1;
        HashMap<String, Object> model = getModel("item", item);
        Assert.assertEquals("1", target.eval("item.id", model));
    }

    @Test
    public void eval_public_method_null() {
        Item item = new Item();
        HashMap<String, Object> model = getModel("item", item);
        Assert.assertEquals("", target.eval("item.methodNull", model));
    }

    @Test
    public void eval_map() {
        HashMap<String, Object> item = new HashMap<String, Object>();
        item.put("name", "名称");
        item.put("price", 3500);
        HashMap<String, Object> model = getModel("item", item);
        Assert.assertEquals("名称", target.eval("item.name", model));
        Assert.assertEquals("3500", target.eval("item.price", model));
    }

    @Test(expected = EvalException.class)
    public void eval_public_none_property() {
        Item item = new Item();
        HashMap<String, Object> model = getModel("item", item);
        target.eval("item.xx", model);
    }

    @Test(expected = EvalException.class)
    public void eval_private_property() {
        Item item = new Item();
        HashMap<String, Object> model = getModel("item", item);
        target.eval("item.privateValue", model);
    }

    @Test(expected = EvalException.class)
    public void eval_private_getter() {
        Item item = new Item();
        HashMap<String, Object> model = getModel("item", item);
        target.eval("item.privateValue", model);
    }

    @Test(expected = EvalException.class)
    public void eval_map_not_found() {
        HashMap<String, Object> item = new HashMap<String, Object>();
        HashMap<String, Object> model = getModel("item", item);
        target.eval("item.name", model);
    }

    @Test
    public void eval_string_expression_back() {
        HashMap<String, Object> model = getModel("value", 1);
        Assert.assertEquals("value=1", target.eval("value=${value}", model));
    }

    @Test
    public void eval_string_expression_front() {
        HashMap<String, Object> model = getModel("value", 1);
        Assert.assertEquals("1=value", target.eval("${value}=value", model));
    }

    @Test
    public void eval_string_expression_double() {
        HashMap<String, Object> model = new HashMap<String, Object>();
        model.put("foo", "FOO");
        model.put("bar", "BAR");
        Assert.assertEquals("FOO,BAR", target.eval("${foo},${bar}", model));
    }

    /**
     * シングルクォーテーションで囲まれている場合は単純な文字列として扱う
     */
    @Test
    public void eval_string_hello() {
        Assert.assertEquals("hello", target.eval("'hello'"));
    }

    /**
     * シングルクォーテーションで囲まれている場合は単純な文字列として扱う
     */
    @Test
    public void eval_string_123() {
        Assert.assertEquals("123", target.eval("'123'"));
    }

    /**
     * #で始まる場合は単純な文字列として扱う
     */
    @Test
    public void eval_string_sharponly() {
        Assert.assertEquals("", target.eval("#"));
    }

    /**
     */
    @Test
    public void eval_empty() {
        Assert.assertEquals("", target.eval(""));
    }

    /**
     * 真偽値評価で空文字列はfalse
     */
    @Test
    public void evalBoolean_emptyStr() {
        HashMap<String, Object> model = new HashMap<String, Object>();
        model.put("foo", "");
        assertThat(target.evalBoolean("foo", model), is(false));
    }

    /**
     * falseという文字列はfalse
     */
    @Test
    public void evalBoolean_false() {
        HashMap<String, Object> model = new HashMap<String, Object>();
        model.put("foo", "false");
        assertThat(target.evalBoolean("foo", model), is(false));
    }

    /**
     * FALSEという文字列はfalse
     */
    @Test
    public void evalBoolean_FALSE() {
        HashMap<String, Object> model = new HashMap<String, Object>();
        model.put("foo", "FALSE");
        assertThat(target.evalBoolean("foo", model), is(false));
    }

    /**
     * 真偽値評価で0はfalse
     */
    @Test
    public void evalBoolean_0() {
        HashMap<String, Object> model = new HashMap<String, Object>();
        model.put("foo", 0);
        assertThat(target.evalBoolean("foo", model), is(false));
    }

    /**
     * 真偽値評価で0Lはfalse
     */
    @Test
    public void evalBoolean_0L() {
        HashMap<String, Object> model = new HashMap<String, Object>();
        model.put("foo", Long.valueOf(0));
        assertThat(target.evalBoolean("foo", model), is(false));
    }

    /**
     * 真偽値評価で0fはfalse
     */
    @Test
    public void evalBoolean_0F() {
        HashMap<String, Object> model = new HashMap<String, Object>();
        model.put("foo", new Float(0.0f));
        assertThat(target.evalBoolean("foo", model), is(false));
    }

    /**
     * 真偽値評価で0dはfalse
     */
    @Test
    public void evalBoolean_0D() {
        HashMap<String, Object> model = new HashMap<String, Object>();
        model.put("foo", new Double(0.0f));
        assertThat(target.evalBoolean("foo", model), is(false));
    }

    /**
     * 真偽値評価でサイズ1以上の文字列はtrue
     */
    @Test
    public void evalBoolean_str() {
        HashMap<String, Object> model = new HashMap<String, Object>();
        model.put("foo", "_");
        assertThat(target.evalBoolean("foo", model), is(true));
    }

    /**
     * 真偽値評価で1はtrue
     */
    @Test
    public void evalBoolean_1() {
        HashMap<String, Object> model = new HashMap<String, Object>();
        model.put("foo", 1);
        assertThat(target.evalBoolean("foo", model), is(true));
    }

    /**
     * 真偽値評価で1はtrue
     */
    @Test
    public void evalBoolean_1L() {
        HashMap<String, Object> model = new HashMap<String, Object>();
        model.put("foo", Long.valueOf(1));
        assertThat(target.evalBoolean("foo", model), is(true));
    }

    /**
     * 真偽値評価で1はtrue
     */
    @Test
    public void evalBoolean_1F() {
        HashMap<String, Object> model = new HashMap<String, Object>();
        model.put("foo", new Float(1.0f));
        assertThat(target.evalBoolean("foo", model), is(true));
    }

    /**
     * 真偽値評価で1はtrue
     */
    @Test
    public void evalBoolean_1D() {
        HashMap<String, Object> model = new HashMap<String, Object>();
        model.put("foo", new Double(1.0d));
        assertThat(target.evalBoolean("foo", model), is(true));
    }

    /**
     * 1==1
     */
    @Test
    public void evalBoolean_equals() {
        assertThat(target.evalBoolean("1==1"), is(true));
    }

    /**
     * 真偽評価:文字列の比較でtrue
     */
    @Test
    public void evalBoolean_equals_string_true() {
        HashMap<String, Object> model = new HashMap<String, Object>();
        model.put("foo", "Hello");
        model.put("bar", "Hello");
        assertThat(target.evalBoolean("foo==bar", model), is(true));
    }

    /**
     * 真偽評価:文字列の比較でfalse
     */
    @Test
    public void evalBoolean_equals_string_false() {
        HashMap<String, Object> model = new HashMap<String, Object>();
        model.put("foo", "Hello");
        model.put("bar", "HELLO");
        assertThat(target.evalBoolean("foo==bar", model), is(false));
    }

    /**
     * 真偽値評価でサイズ0の配列はfalse
     */
    @Test
    public void evalBoolean_array0() {
        HashMap<String, Object> model = new HashMap<String, Object>();
        model.put("foo", new String[0]);
        assertThat(target.evalBoolean("foo", model), is(false));
    }

    /**
     * 真偽値評価でサイズ1の配列はtrue
     */
    @Test
    public void evalBoolean_array1() {
        HashMap<String, Object> model = new HashMap<String, Object>();
        model.put("foo", new String[1]);
        assertThat(target.evalBoolean("foo", model), is(true));
    }

    /**
     * 真偽値評価でサイズ0のListはfalse
     */
    @Test
    public void evalBoolean_list0() {
        HashMap<String, Object> model = new HashMap<String, Object>();
        model.put("foo", new ArrayList<Object>());
        assertThat(target.evalBoolean("foo", model), is(false));
    }

    /**
     * 真偽値評価でサイズ1のListはtrue
     */
    @Test
    public void evalBoolean_list1() {
        ArrayList<Object> list = new ArrayList<Object>();
        list.add(new Object());
        HashMap<String, Object> model = new HashMap<String, Object>();
        model.put("foo", list);
        assertThat(target.evalBoolean("foo", model), is(true));
    }

    /**
     * 真偽値評価でnullはfalse
     */
    @Test
    public void evalBoolean_null() {
        HashMap<String, Object> model = new HashMap<String, Object>();
        model.put("foo", null);
        assertThat(target.evalBoolean("foo", model), is(false));
    }

    /**
     * 真偽値評価でtoStringがfalseの場合はfalse
     */
    @Test
    public void evalBoolean_toString_false() {
        HashMap<String, Object> model = new HashMap<String, Object>();
        model.put("foo", new Object() {
            @Override
            public String toString() {
                return "false";
            }
        });
        assertThat(target.evalBoolean("foo", model), is(false));
    }
   
    /**
     * 真偽値評価でtoStringがFalseの場合はfalse
     */
    @Test
    public void evalBoolean_toString_False() {
        HashMap<String, Object> model = new HashMap<String, Object>();
        model.put("foo", new Object() {
            @Override
            public String toString() {
                return "False";
            }
        });
        assertThat(target.evalBoolean("foo", model), is(false));
    }
   
    /**
     * 真偽値評価でtoStringが0の場合はfalse
     */
    @Test
    public void evalBoolean_toString_0() {
        HashMap<String, Object> model = new HashMap<String, Object>();
        model.put("foo", new Object() {
            @Override
            public String toString() {
                return "0";
            }
        });
        assertThat(target.evalBoolean("foo", model), is(false));
    }
   
    /**
     * 真偽値評価で非nullはtrue
     */
    @Test
    public void evalBoolean_someObject() {
        HashMap<String, Object> model = new HashMap<String, Object>();
        model.put("foo", new Object());
        assertThat(target.evalBoolean("foo", model), is(true));
    }

    @Test
    public void evalBoolean_objectField() {
        HashMap<String, Object> model = new HashMap<String, Object>();
        Item item = new Item();
        item.sale = true;
        model.put("foo", item);
        assertThat(target.evalBoolean("foo.sale", model), is(true));
    }

    @Test
    public void evalBoolean_objectField_true() {
        HashMap<String, Object> model = new HashMap<String, Object>();
        Item item = new Item();
        item.sale = true;
        model.put("foo", item);
        assertThat(target.evalBoolean("foo.sale", model), is(true));
    }

    @Test
    public void evalBoolean_objectField_false() {
        HashMap<String, Object> model = new HashMap<String, Object>();
        Item item = new Item();
        item.sale = false;
        model.put("foo", item);
        assertThat(target.evalBoolean("foo.sale", model), is(false));
    }

    @Test
    public void evalBoolean_equals_obj_true() {
        HashMap<String, Object> model = new HashMap<String, Object>();
        model.put("name", "Hello");
        Item item = new Item();
        item.name = "Hello";
        model.put("item", item);
        assertThat(target.evalBoolean("name==item.name", model), is(true));
    }

    @Test
    public void evalBoolean_equals_obj_false() {
        HashMap<String, Object> model = new HashMap<String, Object>();
        model.put("name", "Hello");
        Item item = new Item();
        item.name = "HELLO";
        model.put("item", item);
        assertThat(target.evalBoolean("name==item.name", model), is(false));
    }

    /**
     * !=
     */
    @Test
    public void evalBoolean_notequals() {
        Assert.assertEquals(false, target.evalBoolean("1!=1"));
    }

    @Test
    public void evalBoolean_notequals_obj_false() {
        HashMap<String, Object> model = new HashMap<String, Object>();
        model.put("name", "Hello");
        Item item = new Item();
        item.name = "Hello";
        model.put("item", item);
        Assert.assertEquals(false, target.evalBoolean("name!=item.name", model));
    }

    @Test
    public void evalBoolean_notequals_obj_true() {
        HashMap<String, Object> model = new HashMap<String, Object>();
        model.put("name", "Hello");
        Item item = new Item();
        item.name = "HELLO";
        model.put("item", item);
        Assert.assertEquals(true, target.evalBoolean("name!=item.name", model));
    }
}
TOP

Related Classes of org.pirkaengine.core.expression.ExpressionEngineTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.