Package com.google.visualization.datasource.query

Source Code of com.google.visualization.datasource.query.CompoundFilterTest

// Copyright 2009 Google 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 com.google.visualization.datasource.query;

import com.google.common.collect.Lists;
import com.google.visualization.datasource.datatable.ColumnDescription;
import com.google.visualization.datasource.datatable.DataTable;
import com.google.visualization.datasource.datatable.TableCell;
import com.google.visualization.datasource.datatable.TableRow;
import com.google.visualization.datasource.datatable.value.BooleanValue;
import com.google.visualization.datasource.datatable.value.NumberValue;
import com.google.visualization.datasource.datatable.value.ValueType;

import junit.framework.TestCase;

import java.util.List;
import java.util.Set;

/**
* Test for CompoundFilter.
*
* @author Yonatan B.Y.
*/
public class CompoundFilterTest extends TestCase {
  public void testAndFilter() {
    TableRow trueRow = new TableRow();
    trueRow.addCell(new TableCell("a"));
    trueRow.addCell(new TableCell(123));
    trueRow.addCell(new TableCell("a"));
    TableRow falseRow = new TableRow();
    falseRow.addCell(new TableCell("a"));
    falseRow.addCell(new TableCell(123));
    falseRow.addCell(new TableCell("b"));

    DataTable table = new DataTable();
    table.addColumn(new ColumnDescription("c1", ValueType.TEXT, "c1"));
    table.addColumn(new ColumnDescription("c2", ValueType.TEXT, "c2"));
    table.addColumn(new ColumnDescription("c3", ValueType.TEXT, "c3"));

    ColumnColumnFilter filter1 = new ColumnColumnFilter(new SimpleColumn("c1"),
        new SimpleColumn("c3"), ComparisonFilter.Operator.EQ);
    ColumnValueFilter filter2 = new ColumnValueFilter(new SimpleColumn("c2"),
        new NumberValue(100), ComparisonFilter.Operator.GT);
    List<QueryFilter> subfilterList = Lists.newArrayList();
    subfilterList.add(filter1);
    subfilterList.add(filter2);
    CompoundFilter compoundFilter = new CompoundFilter(
        CompoundFilter.LogicalOperator.AND, subfilterList);
    assertTrue(compoundFilter.isMatch(table, trueRow));
    assertFalse(compoundFilter.isMatch(table, falseRow));
  }

  public void testOrFilter() {
    TableRow falseRow = new TableRow();
    falseRow.addCell(new TableCell("a"));
    falseRow.addCell(new TableCell(123));
    falseRow.addCell(new TableCell("a"));
    TableRow trueRow = new TableRow();
    trueRow.addCell(new TableCell("a"));
    trueRow.addCell(new TableCell(123));
    trueRow.addCell(new TableCell("b"));

    DataTable table = new DataTable();
    table.addColumn(new ColumnDescription("c1", ValueType.TEXT, "c1"));
    table.addColumn(new ColumnDescription("c2", ValueType.TEXT, "c2"));
    table.addColumn(new ColumnDescription("c3", ValueType.TEXT, "c3"));

    ColumnColumnFilter filter1 = new ColumnColumnFilter(new SimpleColumn("c1"),
        new SimpleColumn("c3"), ComparisonFilter.Operator.NE);
    ColumnValueFilter filter2 = new ColumnValueFilter(new SimpleColumn("c2"),
        new NumberValue(1000), ComparisonFilter.Operator.GT);
    List<QueryFilter> subfilterList = Lists.newArrayList();
    subfilterList.add(filter1);
    subfilterList.add(filter2);
    CompoundFilter compoundFilter = new CompoundFilter(
        CompoundFilter.LogicalOperator.OR, subfilterList);
    assertTrue(compoundFilter.isMatch(table, trueRow));
    assertFalse(compoundFilter.isMatch(table, falseRow));
  }

  public void testGetAllColumnIds() {
    SimpleColumn col1 = new SimpleColumn("c1");
    SimpleColumn col2 = new SimpleColumn("c2");
    SimpleColumn col3 = new SimpleColumn("c3");
    SimpleColumn col4 = new SimpleColumn("c4");
    ColumnColumnFilter filter1 = new ColumnColumnFilter(col1, col3,
        ComparisonFilter.Operator.NE);
    ColumnValueFilter filter2 = new ColumnValueFilter(col2,
        new NumberValue(1000), ComparisonFilter.Operator.GT);
    ColumnColumnFilter filter3 = new ColumnColumnFilter(col1, col4,
        ComparisonFilter.Operator.LE);
    ColumnValueFilter filter4 = new ColumnValueFilter(col3,
        BooleanValue.TRUE, ComparisonFilter.Operator.GT);
    List<QueryFilter> subfilterList1 = Lists.newArrayList();
    subfilterList1.add(filter1);
    subfilterList1.add(filter2);
    CompoundFilter compoundFilter1 = new CompoundFilter(
        CompoundFilter.LogicalOperator.OR, subfilterList1);
    List<QueryFilter> subfilterList2 = Lists.newArrayList();
    subfilterList2.add(filter3);
    subfilterList2.add(filter4);
    CompoundFilter compoundFilter2 = new CompoundFilter(
        CompoundFilter.LogicalOperator.AND, subfilterList2);
    List<QueryFilter> subfilterList3 = Lists.newArrayList();
    subfilterList3.add(compoundFilter1);
    subfilterList3.add(compoundFilter2);
    CompoundFilter compoundFilter3 = new CompoundFilter(
        CompoundFilter.LogicalOperator.OR,  subfilterList3);

    Set<String> allColumnIds = compoundFilter3.getAllColumnIds();
    assertTrue(allColumnIds.containsAll(Lists.newArrayList("c1",
        "c2", "c3", "c4")));
  }

  public void testToQueryString() {
    SimpleColumn col1 = new SimpleColumn("c1");
    AggregationColumn col2 = new AggregationColumn(new SimpleColumn("c2"),
        AggregationType.COUNT);
    SimpleColumn col3 = new SimpleColumn("c3");
    SimpleColumn col4 = new SimpleColumn("c4");
    ColumnColumnFilter filter1 = new ColumnColumnFilter(col1, col3,
        ComparisonFilter.Operator.NE);
    ColumnValueFilter filter2 = new ColumnValueFilter(col2,
        new NumberValue(1000), ComparisonFilter.Operator.GT);
    ColumnColumnFilter filter3 = new ColumnColumnFilter(col1, col4,
        ComparisonFilter.Operator.CONTAINS);
    ColumnValueFilter filter4 = new ColumnValueFilter(col3,
        BooleanValue.TRUE, ComparisonFilter.Operator.GT, true);
    List<QueryFilter> subfilterList1 = Lists.newArrayList();
    subfilterList1.add(filter1);
    subfilterList1.add(filter2);
    subfilterList1.add(filter3);
    CompoundFilter compoundFilter1 = new CompoundFilter(
        CompoundFilter.LogicalOperator.OR, subfilterList1);
    List<QueryFilter> subfilterList2 = Lists.newArrayList();
    subfilterList2.add(filter3);
    subfilterList2.add(filter4);
    CompoundFilter compoundFilter2 = new CompoundFilter(
        CompoundFilter.LogicalOperator.AND, subfilterList2);
    List<QueryFilter> subfilterList3 = Lists.newArrayList();
    subfilterList3.add(compoundFilter1);
    subfilterList3.add(compoundFilter2);
    CompoundFilter compoundFilter3 = new CompoundFilter(
        CompoundFilter.LogicalOperator.OR,  subfilterList3);

    assertEquals("((`c1` != `c3`) OR (COUNT(`c2`) > 1000.0) OR (`c1` CONTAINS "
        + "`c4`)) OR ((`c1` CONTAINS `c4`) AND (true > `c3`))",
        compoundFilter3.toQueryString());
  }
}
TOP

Related Classes of com.google.visualization.datasource.query.CompoundFilterTest

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.