Package org.openrdf.query.algebra.evaluation.util

Source Code of org.openrdf.query.algebra.evaluation.util.ValueComparatorTest

/*
* Copyright Aduna (http://www.aduna-software.com/) (c) 1997-2007.
*
* Licensed under the Aduna BSD-style license.
*/
package org.openrdf.query.algebra.evaluation.util;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

import junit.framework.TestCase;

import org.openrdf.model.BNode;
import org.openrdf.model.Literal;
import org.openrdf.model.URI;
import org.openrdf.model.ValueFactory;
import org.openrdf.model.impl.ValueFactoryImpl;
import org.openrdf.model.vocabulary.XMLSchema;

/**
* @author James Leigh
*/
public class ValueComparatorTest extends TestCase {

  private ValueFactory vf = ValueFactoryImpl.getInstance();

  private BNode bnode1 = vf.createBNode();

  private BNode bnode2 = vf.createBNode();

  private URI uri1 = vf.createURI("http://script.example/Latin");

  private URI uri2 = vf.createURI("http://script.example/Кириллица");

  private URI uri3 = vf.createURI("http://script.example/日本語");

  private Literal typed1 = vf.createLiteral("http://script.example/Latin", XMLSchema.STRING);

  private ValueComparator cmp = new ValueComparator();

  public void testBothNull()
    throws Exception
  {
    assertTrue(cmp.compare(null, null) == 0);
  }

  public void testLeftNull()
    throws Exception
  {
    assertTrue(cmp.compare(null, typed1) < 0);
  }

  public void testRightNull()
    throws Exception
  {
    assertTrue(cmp.compare(typed1, null) > 0);
  }

  public void testBothBnode()
    throws Exception
  {
    assertTrue(cmp.compare(bnode1, bnode2) == 0);
  }

  public void testLeftBnode()
    throws Exception
  {
    assertTrue(cmp.compare(bnode1, typed1) < 0);
  }

  public void testRightBnode()
    throws Exception
  {
    assertTrue(cmp.compare(typed1, bnode1) > 0);
  }

  public void testBothURI()
    throws Exception
  {
    assertTrue(cmp.compare(uri1, uri1) == 0);
    assertTrue(cmp.compare(uri1, uri2) < 0);
    assertTrue(cmp.compare(uri1, uri3) < 0);
    assertTrue(cmp.compare(uri2, uri1) > 0);
    assertTrue(cmp.compare(uri2, uri2) == 0);
    assertTrue(cmp.compare(uri2, uri3) < 0);
    assertTrue(cmp.compare(uri3, uri1) > 0);
    assertTrue(cmp.compare(uri3, uri2) > 0);
    assertTrue(cmp.compare(uri3, uri3) == 0);
  }

  public void testLeftURI()
    throws Exception
  {
    assertTrue(cmp.compare(uri1, typed1) < 0);
  }

  public void testRightURI()
    throws Exception
  {
    assertTrue(cmp.compare(typed1, uri1) > 0);
  }

  /**
   * Tests whether xsd:int's are properly sorted in a list with mixed value
   * types.
   */
  public void testOrder1()
    throws Exception
  {
    Literal en4 = vf.createLiteral("4", "en");
    Literal int10 = vf.createLiteral(10);
    Literal int9 = vf.createLiteral(9);

    List<Literal> valueList = Arrays.asList(en4, int10, int9);
    Collections.sort(valueList, cmp);

    assertTrue(valueList.indexOf(int9) < valueList.indexOf(int10));
  }

  /**
   * Tests whether various numerics are properly sorted in a list with mixed
   * value types.
   */
  public void testOrder2()
    throws Exception
  {
    Literal en4 = vf.createLiteral("4", "en");
    Literal int10 = vf.createLiteral(10);
    Literal int9 = vf.createLiteral(9);
    Literal plain9 = vf.createLiteral("9");
    Literal integer5 = vf.createLiteral("5", XMLSchema.INTEGER);
    Literal float9 = vf.createLiteral(9f);
    Literal plain4 = vf.createLiteral("4");
    Literal plain10 = vf.createLiteral("10");

    List<Literal> valueList = Arrays.asList(en4, int10, int9, plain9, integer5, float9, plain4, plain10);
    Collections.sort(valueList, cmp);

    assertTrue(valueList.indexOf(integer5) < valueList.indexOf(float9));
    assertTrue(valueList.indexOf(integer5) < valueList.indexOf(int9));
    assertTrue(valueList.indexOf(integer5) < valueList.indexOf(int10));
    assertTrue(valueList.indexOf(float9) < valueList.indexOf(int10));
    assertTrue(valueList.indexOf(int9) < valueList.indexOf(int10));
    assertTrue(valueList.indexOf(int9) < valueList.indexOf(int10));
  }

  /**
   * Tests whether numerics of different types are properly sorted. The list
   * also contains a datatype that would be sorted between the numerics if the
   * datatypes were to be sorted alphabetically.
   */
  public void testOrder3()
    throws Exception
  {
    Literal year1234 = vf.createLiteral("1234", XMLSchema.GYEAR);
    Literal float2000 = vf.createLiteral(2000f);
    Literal int1000 = vf.createLiteral(1000);

    List<Literal> valueList = Arrays.asList(year1234, float2000, int1000);
    Collections.sort(valueList, cmp);
    assertTrue(valueList.indexOf(int1000) < valueList.indexOf(float2000));
  }
}
TOP

Related Classes of org.openrdf.query.algebra.evaluation.util.ValueComparatorTest

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.