Package org.drools.brms.client.modeldriven

Source Code of org.drools.brms.client.modeldriven.SuggestionCompletionTest

package org.drools.brms.client.modeldriven;

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

import junit.framework.TestCase;

import org.drools.brms.server.rules.SuggestionCompletionLoader;

public class SuggestionCompletionTest extends TestCase {

    public void testNestedImports() {
        String pkg = "package org.test\n import org.drools.brms.client.modeldriven.SuggestionCompletionTest.NestedClass";

        SuggestionCompletionLoader loader = new SuggestionCompletionLoader();
        SuggestionCompletionEngine engine = loader.getSuggestionEngine( pkg, new ArrayList(), new ArrayList() );

        assertEquals( "String", engine.getFieldType( "SuggestionCompletionTest$NestedClass", "name" ) );
    }

    public void testStringNonNumeric() {
        String pkg = "package org.test\n import org.drools.brms.client.modeldriven.Alert";

        SuggestionCompletionLoader loader = new SuggestionCompletionLoader();
        SuggestionCompletionEngine engine = loader.getSuggestionEngine( pkg, new ArrayList(), new ArrayList() );

        assertEquals( SuggestionCompletionEngine.TYPE_STRING, engine.getFieldType( "Alert", "message" ) );

    }

    public void testDataEnums() {
        String pkg = "package org.test\n import org.drools.brms.client.modeldriven.SuggestionCompletionTest.NestedClass";

        SuggestionCompletionLoader loader = new SuggestionCompletionLoader();

        List enums = new ArrayList();

        enums.add( "'Person.age' : [42, 43] \n 'Person.sex' : ['M', 'F']");
        enums.add( "'Driver.sex' : ['M', 'F']" );


        SuggestionCompletionEngine engine = loader.getSuggestionEngine( pkg, new ArrayList(), new ArrayList() , enums);
        assertEquals( "String", engine.getFieldType( "SuggestionCompletionTest$NestedClass", "name" ) );

        assertEquals(3, engine.dataEnumLists.size());
        String[] items = (String[]) engine.dataEnumLists.get( "Person.age" );
        assertEquals(2, items.length);
        assertEquals("42", items[0]);
        assertEquals("43", items[1]);
    }

    public void testCompletions() {

        final SuggestionCompletionEngine com = new SuggestionCompletionEngine();

        com.factTypes = new String[]{"Person", "Vehicle"};
        com.fieldsForType = new HashMap() {
            {
                put( "Person",
                     new String[]{"age", "name", "rank"} );
                put( "Vehicle",
                     new String[]{"type", "make"} );
            }
        };
        com.fieldTypes = new HashMap() {
            {
                put( "Person.age",
                     "Numeric" );
                put( "Person.rank",
                     "Comparable" );
                put( "Person.name",
                     "String" );
                put( "Vehicle.make",
                     "String" );
                put( "Vehicle.type",
                     "String" );
            }
        };
        com.globalTypes = new HashMap() {
            {
                put( "bar",
                     "Person" );
                put( "baz",
                     "Vehicle" );
            }
        };

        String[] c = com.getConditionalElements();
        assertEquals( "not",
                      c[0] );
        assertEquals( "exists",
                      c[1] );
        assertEquals( "or",
                      c[2] );

        c = com.getFactTypes();
        assertEquals( 2,
                      c.length );
        assertContains( "Person",
                        c );
        assertContains( "Vehicle",
                        c );

        c = com.getFieldCompletions( "Person" );
        assertEquals( "age",
                      c[0] );
        assertEquals( "name",
                      c[1] );

        c = com.getFieldCompletions( "Vehicle" );
        assertEquals( "type",
                      c[0] );
        assertEquals( "make",
                      c[1] );

        c = com.getOperatorCompletions( "Person",
                                        "name" );
        assertEquals( 3,
                      c.length );
        assertEquals( "==",
                      c[0] );
        assertEquals( "!=",
                      c[1] );
        assertEquals( "matches",
                      c[2] );

        c = com.getOperatorCompletions( "Person",
                                        "age" );
        assertEquals( 6,
                      c.length );
        assertEquals( c[0],
                      "==" );
        assertEquals( c[1],
                      "!=" );
        assertEquals( c[2],
                      "<" );
        assertEquals( c[3],
                      ">" );

        c = com.getOperatorCompletions( "Person",
                                        "rank" );
        assertEquals( 6,
                      c.length );
        assertEquals( c[0],
                      "==" );
        assertEquals( c[1],
                      "!=" );
        assertEquals( c[2],
                      "<" );
        assertEquals( c[3],
                      ">" );

        c = com.getConnectiveOperatorCompletions( "Vehicle",
                                                  "make" );
        assertEquals( 5,
                      c.length );
        assertEquals( "|| ==",
                      c[0] );

        c = com.getGlobalVariables();
        assertEquals( 2,
                      c.length );
        assertEquals( "baz",
                      c[0] );
        assertEquals( "bar",
                      c[1] );

        c = com.getFieldCompletionsForGlobalVariable( "bar" );
        assertEquals( 3,
                      c.length );
        assertEquals( "age",
                      c[0] );
        assertEquals( "name",
                      c[1] );

        c = com.getFieldCompletionsForGlobalVariable( "baz" );
        assertEquals( 2,
                      c.length );
        assertEquals( "type",
                      c[0] );
        assertEquals( "make",
                      c[1] );

        //check that it has default operators for general objects
        c = com.getOperatorCompletions( "Person",
                                        "wankle" );
        assertEquals( 2,
                      c.length );

        assertEquals("Numeric", com.getFieldType( "Person", "age" ));

    }

    public void testAdd() {
        final SuggestionCompletionEngine com = new SuggestionCompletionEngine();
        com.factTypes = new String[]{"Foo"};
        com.fieldsForType = new HashMap() {
            {
                put( "Foo",
                     new String[]{"a"} );
            }
        };

        assertEquals( 1,
                      com.getFactTypes().length );
        assertEquals( "Foo",
                      com.getFactTypes()[0] );

        assertEquals( 1,
                      com.getFieldCompletions( "Foo" ).length );
        assertEquals( "a",
                      com.getFieldCompletions( "Foo" )[0] );

    }

    private void assertContains(final String string,
                                final String[] c) {

        for ( int i = 0; i < c.length; i++ ) {
            if ( string.equals( c[i] ) ) {
                return;
            }
        }
        fail( "String array did not contain: " + string );

    }

    public void testGlobalAndFacts() {
        final SuggestionCompletionEngine com = new SuggestionCompletionEngine();

        com.globalTypes = new HashMap() {
            {
                put( "y",
                     "Foo" );
            }
        };
        com.fieldsForType = new HashMap() {
            {
                put( "Foo",
                     new String[]{"a"} );
            }
        };

        assertFalse( com.isGlobalVariable( "x" ) );
        assertTrue( com.isGlobalVariable( "y" ) );
    }

    public static class NestedClass {
        private String name;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }
}
TOP

Related Classes of org.drools.brms.client.modeldriven.SuggestionCompletionTest

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.