Package com.hp.hpl.jena.rdf.model.test

Source Code of com.hp.hpl.jena.rdf.model.test.TestSeqMethods

/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.hp.hpl.jena.rdf.model.test;

import com.hp.hpl.jena.rdf.model.Alt;
import com.hp.hpl.jena.rdf.model.Bag;
import com.hp.hpl.jena.rdf.model.Container;
import com.hp.hpl.jena.rdf.model.Literal;
import com.hp.hpl.jena.rdf.model.NodeIterator;
import com.hp.hpl.jena.rdf.model.RDFNode;
import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.rdf.model.Seq;
import com.hp.hpl.jena.rdf.model.SeqIndexBoundsException;
import com.hp.hpl.jena.rdf.model.test.helpers.TestingModelFactory;
import com.hp.hpl.jena.test.JenaTestBase;
import com.hp.hpl.jena.vocabulary.RDF;

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

import org.junit.Assert;
import junit.framework.TestSuite;

public class TestSeqMethods extends AbstractContainerMethods
{
  public static TestSuite suite()
  {
    return new TestSuite(TestSeqMethods.class);
  }

  protected LitTestObj aLitTestObj;

  protected Literal tvLiteral;

  protected Resource tvResource;

  // protected Resource tvResObj;
  protected Object anObject;

  protected Bag tvBag;
  protected Alt tvAlt;
  protected Seq tvSeq;
  protected static final String lang = "fr";
  protected static final int num = 10;

  public TestSeqMethods( final TestingModelFactory modelFactory,
      final String name )
  {
    super(modelFactory, name);
  }

  protected boolean[] bools( final String s )
  {
    final boolean[] result = new boolean[s.length()];
    for (int i = 0; i < s.length(); i += 1)
    {
      result[i] = s.charAt(i) == 't';
    }
    return result;
  }

  @Override
  protected Container createContainer()
  {
    return model.createSeq();
  }

  public void error( final String test, final int n )
  {
    Assert.fail(test + " -- " + n);
  }

  @Override
  protected Resource getContainerType()
  {
    return RDF.Seq;
  }

  @Override
  public void setUp() throws Exception
  {
    super.setUp();
    aLitTestObj = new LitTestObj(12345);
    tvLiteral = model.createLiteral("test 12 string 2");
    tvResource = model.createResource();
    // tvResObj = model.createResource( new ResTestObjF() );
    anObject = new LitTestObj(1234);
    tvBag = model.createBag();
    tvAlt = model.createAlt();
    tvSeq = model.createSeq();
  }

  public void testMoreIndexing()
  {
    final int num = 10;
    final Seq seq = model.createSeq();
    for (int i = 0; i < num; i += 1)
    {
      seq.add(i);
    }

    try
    {
      seq.add(0, false);
      Assert.fail("cannot at at position 0");
    }
    catch (final SeqIndexBoundsException e)
    {
      JenaTestBase.pass();
    }

    seq.add(num + 1, false);
    Assert.assertEquals(num + 1, seq.size());

    seq.remove(num + 1);
    try
    {
      seq.add(num + 2, false);
      Assert.fail("cannot add past the end");
    }
    catch (final SeqIndexBoundsException e)
    {
      JenaTestBase.pass();
    }

    final int size = seq.size();
    for (int i = 1; i <= (num - 1); i += 1)
    {
      seq.add(i, 1000 + i);
      Assert.assertEquals(1000 + i, seq.getInt(i));
      Assert.assertEquals(0, seq.getInt(i + 1));
      Assert.assertEquals(size + i, seq.size());
      Assert.assertEquals(num - i - 1, seq.getInt(size));
    }
  }

  protected void testRemove( final boolean[] retain )
  {
    final int num = retain.length;
    final Seq seq = model.createSeq();
    for (int i = 0; i < num; i += 1)
    {
      seq.add(i);
    }
    //
    final List<RDFNode> retained = new ArrayList<RDFNode>();
    //
    final NodeIterator nIter = seq.iterator();
    for (int i = 0; i < num; i += 1)
    {
      final RDFNode x = nIter.nextNode();
      if (retain[i])
      {
        retained.add(x);
      }
      else
      {
        nIter.remove();
      }
    }
    //
    Assert.assertFalse(nIter.hasNext());
    Assert.assertEquals(retained, seq.iterator().toList());
  }

  public void testRemoveA()
  {
    testRemove(bools("tttffffftt"));
  }

  public void testRemoveB()
  {
    testRemove(bools("ftftttttft"));
  }

  public void testRemoveC()
  {
    testRemove(bools("ffffffffff"));
  }

  public void testSeq4()
  {
    final String test = "temp";
    int n = 58305;
    final Seq seq4 = model.createSeq();
    n = ((n / 100) * 100) + 100;
    n++;
    seq4.add(AbstractModelTestBase.tvBoolean);
    n++;
    if (!(seq4.getBoolean(1) == AbstractModelTestBase.tvBoolean))
    {
      error(test, n);
    }
    n++;
    seq4.add(AbstractModelTestBase.tvByte);
    n++;
    if (!(seq4.getByte(2) == AbstractModelTestBase.tvByte))
    {
      error(test, n);
    }
    n++;
    seq4.add(AbstractModelTestBase.tvShort);
    n++;
    if (!(seq4.getShort(3) == AbstractModelTestBase.tvShort))
    {
      error(test, n);
    }
    n++;
    seq4.add(AbstractModelTestBase.tvInt);
    n++;
    if (!(seq4.getInt(4) == AbstractModelTestBase.tvInt))
    {
      error(test, n);
    }
    n++;
    seq4.add(AbstractModelTestBase.tvLong);
    n++;
    if (!(seq4.getLong(5) == AbstractModelTestBase.tvLong))
    {
      error(test, n);
    }
    n++;
    seq4.add(AbstractModelTestBase.tvChar);
    n++;
    if (!(seq4.getChar(6) == AbstractModelTestBase.tvChar))
    {
      error(test, n);
    }
    n++;
    seq4.add(AbstractModelTestBase.tvFloat);
    n++;
    if (!(seq4.getFloat(7) == AbstractModelTestBase.tvFloat))
    {
      error(test, n);
    }
    n++;
    seq4.add(AbstractModelTestBase.tvDouble);
    n++;
    if (!(seq4.getDouble(8) == AbstractModelTestBase.tvDouble))
    {
      error(test, n);
    }
    n++;
    seq4.add(AbstractModelTestBase.tvString);
    n++;
    if (!(seq4.getString(9).equals(AbstractModelTestBase.tvString)))
    {
      error(test, n);
    }
    n++;
    if (!(seq4.getLanguage(9).equals("")))
    {
      error(test, n);
    }
    n++;
    seq4.add(AbstractModelTestBase.tvString, TestSeqMethods.lang);
    n++;
    if (!(seq4.getString(10).equals(AbstractModelTestBase.tvString)))
    {
      error(test, n);
    }
    n++;
    if (!(seq4.getLanguage(10).equals(TestSeqMethods.lang)))
    {
      error(test, n);
    }
    n++;
    seq4.add(anObject);
    n++;
    // if (!(seq4.getObject( 11, new LitTestObjF() ).equals( anObject )))
    // error(
    // test, n );
    n++;
    seq4.add(tvResource);
    n++;
    if (!(seq4.getResource(12).equals(tvResource)))
    {
      error(test, n);
    }
    n++;
    seq4.add(tvLiteral);
    n++;
    if (!(seq4.getLiteral(13).equals(tvLiteral)))
    {
      error(test, n);
    }
    n++;
    // seq4.add( tvResObj );
    // n++;
    // if (!(seq4.getResource( 14, new ResTestObjF() ).equals( tvResObj )))
    // error(
    // test, n );
    n++;
    seq4.add(tvBag);
    n++;
    if (!(seq4.getBag(14).equals(tvBag)))
    {
      error(test, n);
    }
    n++;
    seq4.add(tvAlt);
    n++;
    if (!(seq4.getAlt(15).equals(tvAlt)))
    {
      error(test, n);
    }
    n++;
    seq4.add(tvSeq);
    n++;
    if (!(seq4.getSeq(16).equals(tvSeq)))
    {
      error(test, n);
    }
    n++;
    try
    {
      seq4.getInt(17);
      error(test, n);
    }
    catch (final SeqIndexBoundsException e)
    {
      // as required
    }
    n++;
    try
    {
      seq4.getInt(0);
      error(test, n);
    }
    catch (final SeqIndexBoundsException e)
    {
      // as required
    }
  }

  public void testSeq5()
  {
    final Seq seq5 = model.createSeq();
    final String test = "seq5";
    int n = 0;
    for (int i = 0; i < TestSeqMethods.num; i++)
    {
      seq5.add(i);
    }

    try
    {
      n++;
      seq5.add(0, false);
      error(test, n);
    }
    catch (final SeqIndexBoundsException e)
    {
      // as required
    }
    seq5.add(TestSeqMethods.num + 1, false);
    if (seq5.size() != (TestSeqMethods.num + 1))
    {
      error(test, n);
    }
    seq5.remove(TestSeqMethods.num + 1);
    try
    {
      n++;
      seq5.add(TestSeqMethods.num + 2, false);
      error(test, n);
    }
    catch (final SeqIndexBoundsException e)
    {
      // as required
    }

    n = ((n / 100) * 100) + 100;
    final int size = seq5.size();
    for (int i = 1; i <= (TestSeqMethods.num - 1); i++)
    {
      n++;
      seq5.add(i, 1000 + i);
      n++;
      if (!(seq5.getInt(i) == (1000 + i)))
      {
        error(test, n);
      }
      n++;
      if (!(seq5.getInt(i + 1) == 0))
      {
        error(test, n);
      }
      n++;
      if (!(seq5.size() == (size + i)))
      {
        error(test, n);
      }
      n++;
      if (!(seq5.getInt(size) == (TestSeqMethods.num - i - 1)))
      {
        error(test, n);
      }
    }
  }

  public void testSeq6()
  {
    final String test = "seq6";
    int n = 0;
    final Seq seq6 = model.createSeq();
    seq6.add(model.createResource());
    seq6.add(1, AbstractModelTestBase.tvBoolean);
    n++;
    if (!(seq6.getBoolean(1) == AbstractModelTestBase.tvBoolean))
    {
      error(test, n);
    }
    seq6.add(1, AbstractModelTestBase.tvByte);
    n++;
    if (!(seq6.getByte(1) == AbstractModelTestBase.tvByte))
    {
      error(test, n);
    }
    seq6.add(1, AbstractModelTestBase.tvShort);
    n++;
    if (!(seq6.getShort(1) == AbstractModelTestBase.tvShort))
    {
      error(test, n);
    }
    seq6.add(1, AbstractModelTestBase.tvInt);
    n++;
    if (!(seq6.getInt(1) == AbstractModelTestBase.tvInt))
    {
      error(test, n);
    }
    seq6.add(1, AbstractModelTestBase.tvLong);
    n++;
    if (!(seq6.getLong(1) == AbstractModelTestBase.tvLong))
    {
      error(test, n);
    }
    seq6.add(1, AbstractModelTestBase.tvChar);
    n++;
    if (!(seq6.getChar(1) == AbstractModelTestBase.tvChar))
    {
      error(test, n);
    }
    seq6.add(1, AbstractModelTestBase.tvFloat);
    n++;
    if (!(seq6.getFloat(1) == AbstractModelTestBase.tvFloat))
    {
      error(test, n);
    }
    seq6.add(1, AbstractModelTestBase.tvDouble);
    n++;
    if (!(seq6.getDouble(1) == AbstractModelTestBase.tvDouble))
    {
      error(test, n);
    }
    seq6.add(1, AbstractModelTestBase.tvString);
    n++;
    if (!(seq6.getString(1).equals(AbstractModelTestBase.tvString)))
    {
      error(test, n);
    }
    seq6.add(1, AbstractModelTestBase.tvString, TestSeqMethods.lang);
    n++;
    if (!(seq6.getString(1).equals(AbstractModelTestBase.tvString)))
    {
      error(test, n);
    }
    seq6.add(1, tvResource);
    n++;
    if (!(seq6.getResource(1).equals(tvResource)))
    {
      error(test, n);
    }
    seq6.add(1, tvLiteral);
    n++;
    if (!(seq6.getLiteral(1).equals(tvLiteral)))
    {
      error(test, n);
    }
    seq6.add(1, anObject);
    n++;
    // if (!(seq6.getObject( 1, new LitTestObjF() ).equals( anObject )))
    // error(
    // test, n );

    n = ((n / 100) * 100) + 100;
    n++;
    if (!(seq6.indexOf(anObject) == 1))
    {
      error(test, n);
    }
    n++;
    if (!(seq6.indexOf(tvLiteral) == 2))
    {
      error(test, n);
    }
    n++;
    if (!(seq6.indexOf(tvResource) == 3))
    {
      error(test, n);
    }
    n++;
    if (!(seq6.indexOf(AbstractModelTestBase.tvString, TestSeqMethods.lang) == 4))
    {
      error(test, n);
    }
    n++;
    if (!(seq6.indexOf(AbstractModelTestBase.tvString) == 5))
    {
      error(test, n);
    }
    n++;
    if (!(seq6.indexOf(AbstractModelTestBase.tvDouble) == 6))
    {
      error(test, n);
    }
    n++;
    if (!(seq6.indexOf(AbstractModelTestBase.tvFloat) == 7))
    {
      error(test, n);
    }
    n++;
    if (!(seq6.indexOf(AbstractModelTestBase.tvChar) == 8))
    {
      error(test, n);
    }
    n++;
    if (!(seq6.indexOf(AbstractModelTestBase.tvLong) == 9))
    {
      error(test, n);
    }
    n++;
    if (!(seq6.indexOf(AbstractModelTestBase.tvInt) == 10))
    {
      error(test, n);
    }
    n++;
    if (!(seq6.indexOf(AbstractModelTestBase.tvShort) == 11))
    {
      error(test, n);
    }
    n++;
    if (!(seq6.indexOf(AbstractModelTestBase.tvByte) == 12))
    {
      error(test, n);
    }
    n++;
    if (!(seq6.indexOf(AbstractModelTestBase.tvBoolean) == 13))
    {
      error(test, n);
    }
    n++;
    if (!(seq6.indexOf(1234543) == 0))
    {
      error(test, n);
    }
  }

  public void testSeq7()
  {
    final Seq seq7 = model.createSeq();
    final String test = "seq7";
    int n = 0;
    n = ((n / 100) * 100) + 100;
    for (int i = 0; i < TestSeqMethods.num; i++)
    {
      seq7.add(i);
    }
    n = ((n / 100) * 100) + 100;
    seq7.set(5, AbstractModelTestBase.tvBoolean);
    n++;
    if (!(seq7.getBoolean(5) == AbstractModelTestBase.tvBoolean))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.getInt(4) == 3))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.getInt(6) == 5))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.size() == TestSeqMethods.num))
    {
      error(test, n);
    }
    n = ((n / 100) * 100) + 100;
    seq7.set(5, AbstractModelTestBase.tvByte);
    n++;
    if (!(seq7.getByte(5) == AbstractModelTestBase.tvByte))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.getInt(4) == 3))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.getInt(6) == 5))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.size() == TestSeqMethods.num))
    {
      error(test, n);
    }
    n = ((n / 100) * 100) + 100;
    seq7.set(5, AbstractModelTestBase.tvShort);
    n++;
    if (!(seq7.getShort(5) == AbstractModelTestBase.tvShort))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.getInt(4) == 3))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.getInt(6) == 5))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.size() == TestSeqMethods.num))
    {
      error(test, n);
    }
    n = ((n / 100) * 100) + 100;
    seq7.set(5, AbstractModelTestBase.tvInt);
    n++;
    if (!(seq7.getInt(5) == AbstractModelTestBase.tvInt))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.getInt(4) == 3))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.getInt(6) == 5))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.size() == TestSeqMethods.num))
    {
      error(test, n);
    }
    n = ((n / 100) * 100) + 100;
    seq7.set(5, AbstractModelTestBase.tvLong);
    n++;
    if (!(seq7.getLong(5) == AbstractModelTestBase.tvLong))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.getInt(4) == 3))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.getInt(6) == 5))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.size() == TestSeqMethods.num))
    {
      error(test, n);
    }
    n = ((n / 100) * 100) + 100;
    seq7.set(5, AbstractModelTestBase.tvChar);
    n++;
    if (!(seq7.getChar(5) == AbstractModelTestBase.tvChar))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.getInt(4) == 3))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.getInt(6) == 5))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.size() == TestSeqMethods.num))
    {
      error(test, n);
    }
    n = ((n / 100) * 100) + 100;
    seq7.set(5, AbstractModelTestBase.tvFloat);
    n++;
    if (!(seq7.getFloat(5) == AbstractModelTestBase.tvFloat))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.getInt(4) == 3))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.getInt(6) == 5))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.size() == TestSeqMethods.num))
    {
      error(test, n);
    }
    n = ((n / 100) * 100) + 100;
    seq7.set(5, AbstractModelTestBase.tvDouble);
    n++;
    if (!(seq7.getDouble(5) == AbstractModelTestBase.tvDouble))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.getInt(4) == 3))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.getInt(6) == 5))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.size() == TestSeqMethods.num))
    {
      error(test, n);
    }
    n = ((n / 100) * 100) + 100;
    seq7.set(5, AbstractModelTestBase.tvString);
    n++;
    if (!(seq7.getString(5).equals(AbstractModelTestBase.tvString)))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.getLanguage(5).equals("")))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.getInt(4) == 3))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.getInt(6) == 5))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.size() == TestSeqMethods.num))
    {
      error(test, n);
    }
    seq7.set(5, AbstractModelTestBase.tvString, TestSeqMethods.lang);
    n++;
    if (!(seq7.getString(5).equals(AbstractModelTestBase.tvString)))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.getLanguage(5).equals(TestSeqMethods.lang)))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.getInt(4) == 3))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.getInt(6) == 5))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.size() == TestSeqMethods.num))
    {
      error(test, n);
    }
    n = ((n / 100) * 100) + 100;
    seq7.set(5, tvLiteral);
    n++;
    if (!(seq7.getLiteral(5).equals(tvLiteral)))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.getInt(4) == 3))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.getInt(6) == 5))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.size() == TestSeqMethods.num))
    {
      error(test, n);
    }
    n = ((n / 100) * 100) + 100;
    seq7.set(5, tvResource);
    n++;
    if (!(seq7.getResource(5).equals(tvResource)))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.getInt(4) == 3))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.getInt(6) == 5))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.size() == TestSeqMethods.num))
    {
      error(test, n);
    }
    n = ((n / 100) * 100) + 100;
    seq7.set(5, anObject);
    n++;
    // if (!(seq7.getObject( 5, new LitTestObjF() )).equals( anObject ))
    // error(
    // test, n );
    n++;
    if (!(seq7.getInt(4) == 3))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.getInt(6) == 5))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.size() == TestSeqMethods.num))
    {
      error(test, n);
    }
    n = ((n / 100) * 100) + 100;
    // seq7.set( 5, tvResObj );
    // n++;
    // if (!(seq7.getResource( 5, new ResTestObjF() ).equals( tvResObj )))
    // error(
    // test, n );
    n++;
    if (!(seq7.getInt(4) == 3))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.getInt(6) == 5))
    {
      error(test, n);
    }
    n++;
    if (!(seq7.size() == TestSeqMethods.num))
    {
      error(test, n);
    }
  }

  public void testSeqAccessByIndexing()
  {
    // LitTestObj tvObject = new LitTestObj(12345);
    final Literal tvLiteral = model.createLiteral("test 12 string 2");
    final Resource tvResource = model.createResource();
    // Resource tvResObj = model.createResource(new ResTestObjF());
    final Object tvLitObj = new LitTestObj(1234);
    final Bag tvBag = model.createBag();
    final Alt tvAlt = model.createAlt();
    final Seq tvSeq = model.createSeq();
    //
    final Seq seq = model.createSeq();
    seq.add(true);
    Assert.assertEquals(true, seq.getBoolean(1));
    seq.add((byte) 1);
    Assert.assertEquals((byte) 1, seq.getByte(2));
    seq.add((short) 2);
    Assert.assertEquals((short) 2, seq.getShort(3));
    seq.add(-1);
    Assert.assertEquals(-1, seq.getInt(4));
    seq.add(-2);
    Assert.assertEquals(-2, seq.getLong(5));
    seq.add('!');
    Assert.assertEquals('!', seq.getChar(6));
    seq.add(123.456f);
    Assert.assertEquals(123.456f, seq.getFloat(7), 0.00005);
    seq.add(12345.67890);
    Assert.assertEquals(12345.67890, seq.getDouble(8), 0.00000005);
    seq.add("some string");
    Assert.assertEquals("some string", seq.getString(9));
    seq.add(tvLitObj);
    // assertEquals( tvLitObj, seq.getObject( 10, new LitTestObjF() ) );
    seq.add(tvResource);
    Assert.assertEquals(tvResource, seq.getResource(11));
    // seq.add( tvResObj );
    // assertEquals( tvResObj, seq.getResource( 12, new ResTestObjF() ) );
    seq.add(tvLiteral);
    Assert.assertEquals(tvLiteral, seq.getLiteral(12));
    seq.add(tvBag);
    Assert.assertEquals(tvBag, seq.getBag(13));
    seq.add(tvAlt);
    Assert.assertEquals(tvAlt, seq.getAlt(14));
    seq.add(tvSeq);
    Assert.assertEquals(tvSeq, seq.getSeq(15));
    //
    try
    {
      seq.getInt(16);
      Assert.fail("there is no element 16");
    }
    catch (final SeqIndexBoundsException e)
    {
      JenaTestBase.pass();
    }
    try
    {
      seq.getInt(0);
      Assert.fail("there is no element 0");
    }
    catch (final SeqIndexBoundsException e)
    {
      JenaTestBase.pass();
    }
  }

  public void testSeqAdd()
  {
    final Seq seq = model.createSeq();
    Assert.assertEquals(0, seq.size());
    Assert.assertTrue(model.contains(seq, RDF.type, RDF.Seq));
    //
    seq.add(AbstractModelTestBase.tvBoolean);
    Assert.assertTrue(seq.contains(AbstractModelTestBase.tvBoolean));
    Assert.assertFalse(seq.contains(!AbstractModelTestBase.tvBoolean));
    //
    seq.add(AbstractModelTestBase.tvByte);
    Assert.assertTrue(seq.contains(AbstractModelTestBase.tvByte));
    Assert.assertFalse(seq.contains((byte) 101));
    //
    seq.add(AbstractModelTestBase.tvShort);
    Assert.assertTrue(seq.contains(AbstractModelTestBase.tvShort));
    Assert.assertFalse(seq.contains((short) 102));
    //
    seq.add(AbstractModelTestBase.tvInt);
    Assert.assertTrue(seq.contains(AbstractModelTestBase.tvInt));
    Assert.assertFalse(seq.contains(-101));
    //
    seq.add(AbstractModelTestBase.tvLong);
    Assert.assertTrue(seq.contains(AbstractModelTestBase.tvLong));
    Assert.assertFalse(seq.contains(-102));
    //
    seq.add(AbstractModelTestBase.tvChar);
    Assert.assertTrue(seq.contains(AbstractModelTestBase.tvChar));
    Assert.assertFalse(seq.contains('?'));
    //
    seq.add(123.456f);
    Assert.assertTrue(seq.contains(123.456f));
    Assert.assertFalse(seq.contains(456.123f));
    //
    seq.add(-123.456d);
    Assert.assertTrue(seq.contains(-123.456d));
    Assert.assertFalse(seq.contains(-456.123d));
    //
    seq.add("a string");
    Assert.assertTrue(seq.contains("a string"));
    Assert.assertFalse(seq.contains("a necklace"));
    //
    seq.add(model.createLiteral("another string"));
    Assert.assertTrue(seq.contains("another string"));
    Assert.assertFalse(seq.contains("another necklace"));
    //
    seq.add(new LitTestObj(12345));
    Assert.assertTrue(seq.contains(new LitTestObj(12345)));
    Assert.assertFalse(seq.contains(new LitTestObj(54321)));
    //
    // Resource present = model.createResource( new ResTestObjF() );
    // Resource absent = model.createResource( new ResTestObjF() );
    // seq.add( present );
    // assertTrue( seq.contains( present ) );
    // assertFalse( seq.contains( absent ) );
    //
    Assert.assertEquals(11, seq.size());
  }

  public void testSeqAddInts()
  {
    final int num = 10;
    final Seq seq = model.createSeq();
    for (int i = 0; i < num; i += 1)
    {
      seq.add(i);
    }
    Assert.assertEquals(num, seq.size());
    final List<RDFNode> L = seq.iterator().toList();
    Assert.assertEquals(num, L.size());
    for (int i = 0; i < num; i += 1)
    {
      Assert.assertEquals(i, ((Literal) L.get(i)).getInt());
    }
  }

  public void testSeqInsertByIndexing()
  {
    // LitTestObj tvObject = new LitTestObj(12345);
    final Literal tvLiteral = model.createLiteral("test 12 string 2");
    final Resource tvResource = model.createResource();
    // Resource tvResObj = model.createResource(new ResTestObjF());
    final Object tvLitObj = new LitTestObj(1234);
    final Bag tvBag = model.createBag();
    final Alt tvAlt = model.createAlt();
    final Seq tvSeq = model.createSeq();

    final Seq seq = model.createSeq();
    seq.add(model.createResource());
    seq.add(1, true);
    Assert.assertEquals(true, seq.getBoolean(1));
    seq.add(1, (byte) 1);
    Assert.assertEquals((byte) 1, seq.getByte(1));
    seq.add(1, (short) 2);
    Assert.assertEquals((short) 2, seq.getShort(1));
    seq.add(1, -1);
    Assert.assertEquals(-1, seq.getInt(1));
    seq.add(1, -2);
    Assert.assertEquals(-2, seq.getLong(1));
    seq.add(1, '!');
    Assert.assertEquals('!', seq.getChar(1));
    seq.add(1, 123.456f);
    Assert.assertEquals(123.456f, seq.getFloat(1), 0.00005);
    seq.add(1, 12345.67890);
    Assert.assertEquals(12345.67890, seq.getDouble(1), 0.00000005);
    seq.add(1, "some string");
    Assert.assertEquals("some string", seq.getString(1));
    seq.add(1, tvLitObj);
    // assertEquals( tvLitObj, seq.getObject( 1, new LitTestObjF() ) );
    seq.add(1, tvResource);
    Assert.assertEquals(tvResource, seq.getResource(1));
    // seq.add( 1, tvResObj );
    // assertEquals( tvResObj, seq.getResource( 1, new ResTestObjF() ) );
    seq.add(1, tvLiteral);
    Assert.assertEquals(tvLiteral, seq.getLiteral(1));
    seq.add(1, tvBag);
    Assert.assertEquals(tvBag, seq.getBag(1));
    seq.add(1, tvAlt);
    Assert.assertEquals(tvAlt, seq.getAlt(1));
    seq.add(1, tvSeq);
    Assert.assertEquals(tvSeq, seq.getSeq(1));
    //
    Assert.assertEquals(0, seq.indexOf(1234543));
    Assert.assertEquals(1, seq.indexOf(tvSeq));
    Assert.assertEquals(2, seq.indexOf(tvAlt));
    Assert.assertEquals(3, seq.indexOf(tvBag));
    Assert.assertEquals(4, seq.indexOf(tvLiteral));
    Assert.assertEquals(5, seq.indexOf(tvResource));
    Assert.assertEquals(6, seq.indexOf(tvLitObj));
    Assert.assertEquals(7, seq.indexOf("some string"));
    Assert.assertEquals(8, seq.indexOf(12345.67890));
    Assert.assertEquals(9, seq.indexOf(123.456f));
    Assert.assertEquals(10, seq.indexOf('!'));
    Assert.assertEquals(11, seq.indexOf(-2));
    Assert.assertEquals(12, seq.indexOf(-1));
    Assert.assertEquals(13, seq.indexOf((short) 2));
    Assert.assertEquals(14, seq.indexOf((byte) 1));
    Assert.assertEquals(15, seq.indexOf(true));
  }

  public void testSet()
  {
    // NodeIterator nIter;
    // StmtIterator sIter;
    final Literal tvLiteral = model.createLiteral("test 12 string 2");
    final Resource tvResource = model.createResource();
    // Resource tvResObj = model.createResource(new ResTestObjF());
    // Bag tvBag = model.createBag();
    // Alt tvAlt = model.createAlt();
    // Seq tvSeq = model.createSeq();
    final int num = 10;
    final Seq seq = model.createSeq();

    for (int i = 0; i < num; i++)
    {
      seq.add(i);
    }

    seq.set(5, AbstractModelTestBase.tvBoolean);
    Assert.assertEquals(AbstractModelTestBase.tvBoolean, seq.getBoolean(5));
    Assert.assertEquals(3, seq.getInt(4));
    Assert.assertEquals(5, seq.getInt(6));
    Assert.assertEquals(num, seq.size());

    seq.set(5, AbstractModelTestBase.tvByte);
    Assert.assertEquals(AbstractModelTestBase.tvByte, seq.getByte(5));
    Assert.assertEquals(3, seq.getInt(4));
    Assert.assertEquals(5, seq.getInt(6));
    Assert.assertEquals(num, seq.size());

    seq.set(5, AbstractModelTestBase.tvShort);
    Assert.assertEquals(AbstractModelTestBase.tvShort, seq.getShort(5));
    Assert.assertEquals(3, seq.getInt(4));
    Assert.assertEquals(5, seq.getInt(6));
    Assert.assertEquals(num, seq.size());

    seq.set(5, AbstractModelTestBase.tvInt);
    Assert.assertEquals(AbstractModelTestBase.tvInt, seq.getInt(5));
    Assert.assertEquals(3, seq.getInt(4));
    Assert.assertEquals(5, seq.getInt(6));
    Assert.assertEquals(num, seq.size());

    seq.set(5, AbstractModelTestBase.tvLong);
    Assert.assertEquals(AbstractModelTestBase.tvLong, seq.getLong(5));
    Assert.assertEquals(3, seq.getInt(4));
    Assert.assertEquals(5, seq.getInt(6));
    Assert.assertEquals(num, seq.size());

    seq.set(5, AbstractModelTestBase.tvString);
    Assert.assertEquals(AbstractModelTestBase.tvString, seq.getString(5));
    Assert.assertEquals(3, seq.getInt(4));
    Assert.assertEquals(5, seq.getInt(6));
    Assert.assertEquals(num, seq.size());

    seq.set(5, AbstractModelTestBase.tvBoolean);
    Assert.assertEquals(AbstractModelTestBase.tvBoolean, seq.getBoolean(5));
    Assert.assertEquals(3, seq.getInt(4));
    Assert.assertEquals(5, seq.getInt(6));
    Assert.assertEquals(num, seq.size());

    seq.set(5, AbstractModelTestBase.tvFloat);
    Assert.assertEquals(AbstractModelTestBase.tvFloat, seq.getFloat(5),
        0.00005);
    Assert.assertEquals(3, seq.getInt(4));
    Assert.assertEquals(5, seq.getInt(6));
    Assert.assertEquals(num, seq.size());

    seq.set(5, AbstractModelTestBase.tvDouble);
    Assert.assertEquals(AbstractModelTestBase.tvDouble, seq.getDouble(5),
        0.000000005);
    Assert.assertEquals(3, seq.getInt(4));
    Assert.assertEquals(5, seq.getInt(6));
    Assert.assertEquals(num, seq.size());

    seq.set(5, tvLiteral);
    Assert.assertEquals(tvLiteral, seq.getLiteral(5));
    Assert.assertEquals(3, seq.getInt(4));
    Assert.assertEquals(5, seq.getInt(6));
    Assert.assertEquals(num, seq.size());

    seq.set(5, tvResource);
    Assert.assertEquals(tvResource, seq.getResource(5));
    Assert.assertEquals(3, seq.getInt(4));
    Assert.assertEquals(5, seq.getInt(6));
    Assert.assertEquals(num, seq.size());

    seq.set(5, AbstractModelTestBase.tvLitObj);
    // assertEquals( tvLitObj, seq.getObject( 5, new LitTestObjF() ) );
    Assert.assertEquals(3, seq.getInt(4));
    Assert.assertEquals(5, seq.getInt(6));
    Assert.assertEquals(num, seq.size());

    // seq.set( 5, tvResObj );
    // assertEquals( tvResObj, seq.getResource( 5, new ResTestObjF() ) );
    // assertEquals( 3, seq.getInt( 4 ) );
    // assertEquals( 5, seq.getInt( 6 ) );
    // assertEquals( num, seq.size() );
  }

}
TOP

Related Classes of com.hp.hpl.jena.rdf.model.test.TestSeqMethods

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.