Package org.drools.guvnor.client.decisiontable.widget

Source Code of org.drools.guvnor.client.decisiontable.widget.DecisionTableDropDownManagerTests

/*
* Copyright 2012 JBoss Inc
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package org.drools.guvnor.client.decisiontable.widget;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.jar.JarInputStream;

import org.drools.guvnor.client.widgets.drools.decoratedgrid.CellValue;
import org.drools.guvnor.client.widgets.drools.decoratedgrid.data.DynamicData;
import org.drools.ide.common.client.modeldriven.ModelField;
import org.drools.ide.common.client.modeldriven.SuggestionCompletionEngine;
import org.drools.ide.common.client.modeldriven.ModelField.FIELD_CLASS_TYPE;
import org.drools.ide.common.client.modeldriven.brl.BaseSingleFieldConstraint;
import org.drools.ide.common.client.modeldriven.dt52.ActionSetFieldCol52;
import org.drools.ide.common.client.modeldriven.dt52.ConditionCol52;
import org.drools.ide.common.client.modeldriven.dt52.GuidedDecisionTable52;
import org.drools.ide.common.client.modeldriven.dt52.Pattern52;
import org.drools.ide.common.server.rules.SuggestionCompletionLoader;
import org.drools.lang.dsl.DSLTokenizedMappingFile;
import org.junit.Before;
import org.junit.Test;

import com.google.gwt.cell.client.Cell.Context;

public class DecisionTableDropDownManagerTests {

    private DynamicData                  data;
    private GuidedDecisionTable52        model;
    private DecisionTableDropDownManager manager;
    private SuggestionCompletionEngine   sce;

    @SuppressWarnings("serial")
    @Before
    public void setup() {

        //---Setup model---
        model = new GuidedDecisionTable52();

        //Setup LHS
        Pattern52 p0 = new Pattern52();
        p0.setBoundName( "$f0" );
        p0.setFactType( "F0" );

        ConditionCol52 c0p0 = new ConditionCol52();
        c0p0.setConstraintValueType( BaseSingleFieldConstraint.TYPE_LITERAL );
        c0p0.setFieldType( SuggestionCompletionEngine.TYPE_STRING );
        c0p0.setFactField( "c0p0" );
        c0p0.setOperator( "==" );
        p0.getChildColumns().add( c0p0 );

        ConditionCol52 c1p0 = new ConditionCol52();
        c1p0.setConstraintValueType( BaseSingleFieldConstraint.TYPE_LITERAL );
        c1p0.setFieldType( SuggestionCompletionEngine.TYPE_STRING );
        c1p0.setFactField( "c1p0" );
        c1p0.setOperator( "==" );
        p0.getChildColumns().add( c1p0 );

        model.getConditions().add( p0 );

        Pattern52 p1 = new Pattern52();
        p1.setBoundName( "$fact" );
        p1.setFactType( "Fact" );

        ConditionCol52 c0p1 = new ConditionCol52();
        c0p1.setConstraintValueType( BaseSingleFieldConstraint.TYPE_LITERAL );
        c0p1.setFieldType( SuggestionCompletionEngine.TYPE_STRING );
        c0p1.setFactField( "field1" );
        c0p1.setOperator( "==" );
        p1.getChildColumns().add( c0p1 );

        ConditionCol52 c1p1 = new ConditionCol52();
        c1p1.setConstraintValueType( BaseSingleFieldConstraint.TYPE_LITERAL );
        c1p1.setFieldType( SuggestionCompletionEngine.TYPE_STRING );
        c1p1.setFactField( "field2" );
        c1p1.setOperator( "==" );
        p1.getChildColumns().add( c1p1 );

        ConditionCol52 c2p1 = new ConditionCol52();
        c2p1.setConstraintValueType( BaseSingleFieldConstraint.TYPE_LITERAL );
        c2p1.setFieldType( SuggestionCompletionEngine.TYPE_STRING );
        c2p1.setFactField( "field3" );
        c2p1.setOperator( "==" );
        p1.getChildColumns().add( c2p1 );

        model.getConditions().add( p1 );

        //Setup RHS
        ActionSetFieldCol52 asf0 = new ActionSetFieldCol52();
        asf0.setBoundName( "$f0" );
        asf0.setType( SuggestionCompletionEngine.TYPE_STRING );
        asf0.setFactField( "asf0" );
        model.getActionCols().add( asf0 );

        ActionSetFieldCol52 asf1 = new ActionSetFieldCol52();
        asf1.setBoundName( "$f0" );
        asf1.setType( SuggestionCompletionEngine.TYPE_STRING );
        asf1.setFactField( "asf1" );
        model.getActionCols().add( asf1 );

        ActionSetFieldCol52 asf2 = new ActionSetFieldCol52();
        asf2.setBoundName( "$fact" );
        asf2.setType( SuggestionCompletionEngine.TYPE_STRING );
        asf2.setFactField( "field1" );
        model.getActionCols().add( asf2 );

        ActionSetFieldCol52 asf3 = new ActionSetFieldCol52();
        asf3.setBoundName( "$fact" );
        asf3.setType( SuggestionCompletionEngine.TYPE_STRING );
        asf3.setFactField( "field2" );
        model.getActionCols().add( asf3 );

        ActionSetFieldCol52 asf4 = new ActionSetFieldCol52();
        asf4.setBoundName( "$fact" );
        asf4.setType( SuggestionCompletionEngine.TYPE_STRING );
        asf4.setFactField( "field3" );
        model.getActionCols().add( asf4 );

        //---Setup data---
        data = new DynamicData();
        data.addRow();
        data.addRow();
        data.addColumn( 0,
                        makeColumnData( new String[]{"0", "1"} ),
                        true );
        data.addColumn( 1,
                        makeColumnData( new String[]{"desc0", "desc1"} ),
                        true );
        data.addColumn( 2,
                        makeColumnData( new String[]{"r0c2", "r1c2"} ),
                        true );
        data.addColumn( 3,
                        makeColumnData( new String[]{"r0c3", "r1c3"} ),
                        true );
        data.addColumn( 4,
                        makeColumnData( new String[]{"val1", "val1"} ),
                        true );
        data.addColumn( 5,
                        makeColumnData( new String[]{"val1a", "val1b"} ),
                        true );
        data.addColumn( 6,
                        makeColumnData( new String[]{"val1a1", "val1b1"} ),
                        true );
        data.addColumn( 7,
                        makeColumnData( new String[]{"r0c4", "r1c4"} ),
                        true );
        data.addColumn( 8,
                        makeColumnData( new String[]{"r0c5", "r1c5"} ),
                        true );
        data.addColumn( 9,
                        makeColumnData( new String[]{"val1", "val1"} ),
                        true );
        data.addColumn( 10,
                        makeColumnData( new String[]{"val1a", "val1b"} ),
                        true );
        data.addColumn( 11,
                        makeColumnData( new String[]{"val1a1", "val1b1"} ),
                        true );

        //---Setup SCE---
        SuggestionCompletionLoader loader = new SuggestionCompletionLoader();

        List<String> enums = new ArrayList<String>();
        final String enumDefinition = "'Fact.field1' : ['val1', 'val2'], "
                                      + "'Fact.field2[field1=val1]' : ['val1a', 'val1b'], "
                                      + "'Fact.field3[field2=val1a]' : ['val1a1', 'val1a2'], "
                                      + "'Fact.field3[field2=val1b]' : ['val1b1', 'val1b2']";
        enums.add( enumDefinition );

        sce = loader.getSuggestionEngine( "",
                                          new ArrayList<JarInputStream>(),
                                          new ArrayList<DSLTokenizedMappingFile>(),
                                          enums );
       
        sce.setFactTypes( new String[]{"F0", "Fact"} );

        sce.setFieldsForTypes( new HashMap<String, ModelField[]>() {
            {
                put( "F0",
                     new ModelField[]{
                             new ModelField( "c0p0",
                                             Integer.class.getName(),
                                             FIELD_CLASS_TYPE.REGULAR_CLASS,
                                             SuggestionCompletionEngine.TYPE_STRING ),
                             new ModelField( "c1p0",
                                             Integer.class.getName(),
                                             FIELD_CLASS_TYPE.REGULAR_CLASS,
                                             SuggestionCompletionEngine.TYPE_STRING ),
                             new ModelField( "asf0",
                                             String.class.getName(),
                                             FIELD_CLASS_TYPE.REGULAR_CLASS,
                                             SuggestionCompletionEngine.TYPE_STRING ),
                             new ModelField( "asf1",
                                             String.class.getName(),
                                             FIELD_CLASS_TYPE.REGULAR_CLASS,
                                             SuggestionCompletionEngine.TYPE_STRING )
                } );

                put( "Fact",
                     new ModelField[]{
                             new ModelField( "field1",
                                             String.class.getName(),
                                             FIELD_CLASS_TYPE.REGULAR_CLASS,
                                             SuggestionCompletionEngine.TYPE_STRING ),
                             new ModelField( "field2",
                                             String.class.getName(),
                                             FIELD_CLASS_TYPE.REGULAR_CLASS,
                                             SuggestionCompletionEngine.TYPE_STRING ),
                             new ModelField( "field3",
                                             String.class.getName(),
                                             FIELD_CLASS_TYPE.REGULAR_CLASS,
                                             SuggestionCompletionEngine.TYPE_STRING )

                } );
            }
        } );


        //---Setup manager---
        manager = new DecisionTableDropDownManager( model,
                                                    data,
                                                    sce );
    }

    private List<CellValue< ? extends Comparable< ? >>> makeColumnData(final String[] values) {
        final List<CellValue< ? extends Comparable< ? >>> columnData = new ArrayList<CellValue< ? extends Comparable< ? >>>();
        for ( String value : values ) {
            columnData.add( new CellValue<String>( value ) );
        }
        return columnData;
    }

    @Test
    public void testConstraints() {
        Context context;
        Map<String, String> values;

        //Row 0, Column 2
        context = new Context( 0,
                               2,
                               null );
        values = manager.getCurrentValueMap( context );
        assertNotNull( values );
        assertEquals( 2,
                      values.size() );

        assertTrue( values.containsKey( "c0p0" ) );
        assertNotNull( values.get( "c0p0" ) );
        assertEquals( "r0c2",
                      values.get( "c0p0" ) );

        assertTrue( values.containsKey( "c1p0" ) );
        assertNotNull( values.get( "c1p0" ) );
        assertEquals( "r0c3",
                      values.get( "c1p0" ) );

        //Row 1, Column 2
        context = new Context( 1,
                               2,
                               null );
        values = manager.getCurrentValueMap( context );
        assertNotNull( values );
        assertEquals( 2,
                      values.size() );

        assertTrue( values.containsKey( "c0p0" ) );
        assertNotNull( values.get( "c0p0" ) );
        assertEquals( "r1c2",
                      values.get( "c0p0" ) );

        assertTrue( values.containsKey( "c1p0" ) );
        assertNotNull( values.get( "c1p0" ) );
        assertEquals( "r1c3",
                      values.get( "c1p0" ) );

        //Row 0, Column 3
        context = new Context( 0,
                               3,
                               null );
        values = manager.getCurrentValueMap( context );
        assertNotNull( values );
        assertEquals( 2,
                      values.size() );

        assertTrue( values.containsKey( "c0p0" ) );
        assertNotNull( values.get( "c0p0" ) );
        assertEquals( "r0c2",
                      values.get( "c0p0" ) );

        assertTrue( values.containsKey( "c1p0" ) );
        assertNotNull( values.get( "c1p0" ) );
        assertEquals( "r0c3",
                      values.get( "c1p0" ) );

        //Row 1, Column 3
        context = new Context( 1,
                               3,
                               null );
        values = manager.getCurrentValueMap( context );
        assertNotNull( values );
        assertEquals( 2,
                      values.size() );

        assertTrue( values.containsKey( "c0p0" ) );
        assertNotNull( values.get( "c0p0" ) );
        assertEquals( "r1c2",
                      values.get( "c0p0" ) );

        assertTrue( values.containsKey( "c1p0" ) );
        assertNotNull( values.get( "c1p0" ) );
        assertEquals( "r1c3",
                      values.get( "c1p0" ) );
    }

    @Test
    public void testActions() {
        Context context;
        Map<String, String> values;

        //Row 0, Column 7
        context = new Context( 0,
                               7,
                               null );
        values = manager.getCurrentValueMap( context );
        assertNotNull( values );
        assertEquals( 2,
                      values.size() );

        assertTrue( values.containsKey( "asf0" ) );
        assertNotNull( values.get( "asf0" ) );
        assertEquals( "r0c4",
                      values.get( "asf0" ) );

        assertTrue( values.containsKey( "asf1" ) );
        assertNotNull( values.get( "asf1" ) );
        assertEquals( "r0c5",
                      values.get( "asf1" ) );

        //Row 1, Column 7
        context = new Context( 1,
                               7,
                               null );
        values = manager.getCurrentValueMap( context );
        assertNotNull( values );
        assertEquals( 2,
                      values.size() );

        assertTrue( values.containsKey( "asf0" ) );
        assertNotNull( values.get( "asf0" ) );
        assertEquals( "r1c4",
                      values.get( "asf0" ) );

        assertTrue( values.containsKey( "asf1" ) );
        assertNotNull( values.get( "asf1" ) );
        assertEquals( "r1c5",
                      values.get( "asf1" ) );

        //Row 0, Column 8
        context = new Context( 0,
                               8,
                               null );
        values = manager.getCurrentValueMap( context );
        assertNotNull( values );
        assertEquals( 2,
                      values.size() );

        assertTrue( values.containsKey( "asf0" ) );
        assertNotNull( values.get( "asf0" ) );
        assertEquals( "r0c4",
                      values.get( "asf0" ) );

        assertTrue( values.containsKey( "asf1" ) );
        assertNotNull( values.get( "asf1" ) );
        assertEquals( "r0c5",
                      values.get( "asf1" ) );

        //Row 1, Column 8
        context = new Context( 1,
                               8,
                               null );
        values = manager.getCurrentValueMap( context );
        assertNotNull( values );
        assertEquals( 2,
                      values.size() );

        assertTrue( values.containsKey( "asf0" ) );
        assertNotNull( values.get( "asf0" ) );
        assertEquals( "r1c4",
                      values.get( "asf0" ) );

        assertTrue( values.containsKey( "asf1" ) );
        assertNotNull( values.get( "asf1" ) );
        assertEquals( "r1c5",
                      values.get( "asf1" ) );
    }

    @Test
    public void testConstraintsEnumDependencies() {

        Context context;
        Set<Integer> columns;

        context = new Context( 0,
                               4,
                               null );
        columns = manager.getDependentColumnIndexes( context );
        assertNotNull( columns );
        assertEquals( 2,
                      columns.size() );
        assertTrue( columns.contains( new Integer( 5 ) ) );
        assertTrue( columns.contains( new Integer( 6 ) ) );

        context = new Context( 0,
                               5,
                               null );
        columns = manager.getDependentColumnIndexes( context );
        assertNotNull( columns );
        assertEquals( 1,
                      columns.size() );
        assertTrue( columns.contains( new Integer( 6 ) ) );
    }

    @Test
    public void testActionsEnumDependencies() {

        Context context;
        Set<Integer> columns;

        context = new Context( 0,
                               9,
                               null );
        columns = manager.getDependentColumnIndexes( context );
        assertNotNull( columns );
        assertEquals( 2,
                      columns.size() );
        assertTrue( columns.contains( new Integer( 10 ) ) );
        assertTrue( columns.contains( new Integer( 11 ) ) );

        context = new Context( 0,
                               10,
                               null );
        columns = manager.getDependentColumnIndexes( context );
        assertNotNull( columns );
        assertEquals( 1,
                      columns.size() );
        assertTrue( columns.contains( new Integer( 11 ) ) );
    }

}
TOP

Related Classes of org.drools.guvnor.client.decisiontable.widget.DecisionTableDropDownManagerTests

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.