[LutinJ2R-commits] r114 - trunk/src/test/java/org/nuiton/j2r
Author: jcouteau Date: 2009-07-26 16:21:18 +0200 (Sun, 26 Jul 2009) New Revision: 114 Modified: trunk/src/test/java/org/nuiton/j2r/ListTest.java Log: Improve RList tests Modified: trunk/src/test/java/org/nuiton/j2r/ListTest.java =================================================================== --- trunk/src/test/java/org/nuiton/j2r/ListTest.java 2009-07-26 14:21:03 UTC (rev 113) +++ trunk/src/test/java/org/nuiton/j2r/ListTest.java 2009-07-26 14:21:18 UTC (rev 114) @@ -125,6 +125,15 @@ assertEquals("b", list1.getNames().get(1)); assertEquals("c", list1.getNames().get(2)); assertEquals("d", list1.getNames().get(3)); + + engine + .voidEval("a<-list(a=as.integer(1),b=\"toto\",c=3.6,d=TRUE,e=FALSE)"); + try { + list1.getNames(); + Assert.fail("Error was not thrown although it should have been"); + } catch (IndexOutOfBoundsException eee) { + } + } @Test @@ -147,6 +156,12 @@ assertEquals("b", list1.getName(1)); assertEquals("c", list1.getName(2)); assertEquals("d", list1.getName(3)); + + try { + list1.getName(4); + Assert.fail("Error was not thrown although it should have been"); + } catch (IndexOutOfBoundsException eee) { + } } @Test @@ -172,6 +187,19 @@ assertEquals("b", list1.getName(1)); assertEquals("c", list1.getName(2)); assertEquals("d", list1.getName(3)); + + names = new ArrayList<String>(); + names.add("a"); + names.add("b"); + names.add("c"); + names.add("d"); + names.add("tooLongNow"); + + try { + list1.setNames(names); + Assert.fail("Error was not thrown although it should have been"); + } catch (IndexOutOfBoundsException eee) { + } } @Test @@ -182,24 +210,27 @@ data.add(3.6); data.add(true); - List<String> names = new ArrayList<String>(); - names.add("a"); - names.add("b"); - names.add("c"); - names.add("d"); - RList list1 = new RList(engine); list1.setVariable("a"); list1.setData(data); + list1.setName(3, "d"); list1.setName(0, "a"); list1.setName(1, "b"); list1.setName(2, "c"); - list1.setName(3, "d"); assertEquals("a", list1.getName(0)); assertEquals("b", list1.getName(1)); assertEquals("c", list1.getName(2)); assertEquals("d", list1.getName(3)); + + list1.setName(3, "d"); + assertEquals("d", list1.getName(3)); + + try { + list1.setName(7, "badName"); + Assert.fail("Error was not thrown although it should have been"); + } catch (IndexOutOfBoundsException eee) { + } } @Test @@ -259,6 +290,9 @@ list1.setVariable("a"); list1.set(3, 3.6); assertEquals(3.6, engine.eval("a[[4]]")); + //test if everything is ok is there is another item at index + list1.set(3, 4.5); + assertEquals(4.5, engine.eval("a[[4]]")); } @Test @@ -267,6 +301,9 @@ list1.setVariable("a"); list1.set(3, true); assertEquals(true, engine.eval("a[[4]]")); + //test if everything is ok is there is another item at index, test if false works + list1.set(3, false); + assertEquals(false, engine.eval("a[[4]]")); } @Test @@ -275,6 +312,9 @@ list1.setVariable("a"); list1.set(3, "titi"); assertEquals("titi", engine.eval("a[[4]]")); + //test if everything is ok is there is another item at index + list1.set(3, "toto"); + assertEquals("toto", engine.eval("a[[4]]")); } @Test @@ -283,6 +323,9 @@ list1.setVariable("a"); list1.set(3, 4); assertEquals(4, engine.eval("a[[4]]")); + //test if everything is ok is there is another item at index + list1.set(3, 6); + assertEquals(6, engine.eval("a[[4]]")); } @Test @@ -294,16 +337,34 @@ list1.set(2, true); list1.set(3, "titi"); + RList list3 = new RList(engine); + list3.setVariable("r"); + list3.set(0, 3.6); + list3.set(1, 3); + list3.set(2, true); + list3.set(3, "titi"); + RList list2 = new RList(engine); list2.setVariable("zerty"); - list2.set(0, list1); - list2.set(1, "a"); + list2.set(1, list1); + list2.set(2, "a"); - assertEquals(3.6, engine.eval("zerty[[1]][[1]]")); - assertEquals(3, engine.eval("zerty[[1]][[2]]")); - assertEquals(true, engine.eval("zerty[[1]][[3]]")); - assertEquals("titi", engine.eval("zerty[[1]][[4]]")); - assertEquals("a", engine.eval("zerty[[2]]")); + assertEquals(3.6, engine.eval("zerty[[2]][[1]]")); + assertEquals(3, engine.eval("zerty[[2]][[2]]")); + assertEquals(true, engine.eval("zerty[[2]][[3]]")); + assertEquals("titi", engine.eval("zerty[[2]][[4]]")); + assertEquals("a", engine.eval("zerty[[3]]")); + + list2.set(2, list3); + assertEquals(3.6, engine.eval("zerty[[2]][[1]]")); + assertEquals(3, engine.eval("zerty[[2]][[2]]")); + assertEquals(true, engine.eval("zerty[[2]][[3]]")); + assertEquals("titi", engine.eval("zerty[[2]][[4]]")); + assertEquals(3.6, engine.eval("zerty[[3]][[1]]")); + assertEquals(3, engine.eval("zerty[[3]][[2]]")); + assertEquals(true, engine.eval("zerty[[3]][[3]]")); + assertEquals("titi", engine.eval("zerty[[3]][[4]]")); + } @Test @@ -322,10 +383,17 @@ assertEquals(3, engine.eval("a[[2]]")); assertEquals(true, engine.eval("a[[3]]")); assertEquals("titi", engine.eval("a[[4]]")); + + try { + list1.get(45); + Assert.fail("Error was not thrown although it should have been"); + } catch (IndexOutOfBoundsException eee) { + } } @Test public void testGetFromGetData() throws Exception { + //test getting a list with double, integer, string and boolean RList list1 = new RList(engine); engine.voidEval("a<-list(a=as.integer(1),b=\"toto\",c=3.6,d=TRUE)"); list1.getFrom("a"); @@ -340,6 +408,20 @@ assertEquals(3.6, list1.getData().get(2)); assertEquals(true, list1.getData().get(3)); + //test if names, data and attributes are null (same list) + RList list2 = new RList(null, null, engine, "ble"); + list2.setAttributes(null); + list2.getFrom("a"); + + assertEquals("a", list2.getName(0)); + assertEquals("b", list2.getName(1)); + assertEquals("c", list2.getName(2)); + assertEquals("d", list2.getName(3)); + + assertEquals(1, list2.getData().get(0)); + assertEquals("toto", list2.getData().get(1)); + assertEquals(3.6, list2.getData().get(2)); + assertEquals(true, list2.getData().get(3)); } @Test @@ -350,6 +432,31 @@ list1.setAttribute("doubleAttribute", 3.6); list1.setAttribute("integerAttribute", 3); list1.setAttribute("booleanTrueAttribute", true); + list1.setAttribute("booleanFalseAttribute", false); + Boolean[] booleanArray = { true, false }; + list1.setAttribute("badAttribute", booleanArray); + + Assert.assertEquals("test_value", engine + .eval("attributes(a)$stringAttribute")); + Assert.assertEquals(3.6, engine.eval("attributes(a)$doubleAttribute")); + Assert.assertEquals(3, engine.eval("attributes(a)$integerAttribute")); + Assert.assertEquals(true, engine + .eval("attributes(a)$booleanTrueAttribute")); + Assert.assertEquals(false, engine + .eval("attributes(a)$booleanFalseAttribute")); + Assert + .assertEquals("test_value", list1 + .getAttribute("stringAttribute")); + Assert.assertEquals(3.6, list1.getAttribute("doubleAttribute")); + Assert.assertEquals(3, list1.getAttribute("integerAttribute")); + Assert.assertEquals(true, list1.getAttribute("booleanTrueAttribute")); + Assert.assertEquals(false, list1.getAttribute("booleanFalseAttribute")); + + //Try resetting attributes to see everything goes well when attribute already exists. + list1.setAttribute("stringAttribute", "test_value"); + list1.setAttribute("doubleAttribute", 3.6); + list1.setAttribute("integerAttribute", 3); + list1.setAttribute("booleanTrueAttribute", true); list1.setAttribute("booleanFalseAttribute", false); Assert.assertEquals("test_value", engine @@ -368,9 +475,10 @@ Assert.assertEquals(true, list1.getAttribute("booleanTrueAttribute")); Assert.assertEquals(false, list1.getAttribute("booleanFalseAttribute")); - list1.setAttribute("test_attribute", "third_value"); - Assert.assertEquals("third_value", (String) engine - .eval("attributes(a)$test_attribute")); + //Try if exception normally thrown when attribute does not exist + list1.setAttributes(new HashMap<String, Object>()); + engine.eval("attr(a,\"BooleanFalseAttribute\")<-FALSE"); + Assert.assertEquals(false, list1.getAttribute("booleanFalseAttribute")); try { list1.getAttribute("toto"); @@ -392,8 +500,12 @@ attributes.put("integerAttribute", 3); attributes.put("booleanTrueAttribute", true); attributes.put("booleanFalseAttribute", false); + Boolean[] booleanArray = { true, false }; + attributes.put("badAttribute", booleanArray); list1.setAttributes(attributes); + engine.eval("attr(a,\"newBooleanFalseAttribute\")<-FALSE"); + Assert.assertEquals("test_value", engine .eval("attributes(a)$stringAttribute")); Assert.assertEquals(3.6, engine.eval("attributes(a)$doubleAttribute")); @@ -410,6 +522,8 @@ "booleanTrueAttribute")); Assert.assertEquals(false, list1.getAttributes().get( "booleanFalseAttribute")); + Assert.assertEquals(false, list1.getAttributes().get( + "newBooleanFalseAttribute")); } @Test @@ -522,6 +636,12 @@ assertEquals("c", list1.getName(2)); assertEquals("d", list1.getName(3)); + try { + list1.getName(4); + Assert.fail("Error was not thrown although it should have been"); + } catch (IndexOutOfBoundsException eee) { + } + engine.setAutoCommit(true); } @@ -723,6 +843,12 @@ assertEquals(true, list1.get(2)); assertEquals("titi", list1.get(3)); engine.setAutoCommit(true); + + try { + list1.get(45); + Assert.fail("Error was not thrown although it should have been"); + } catch (IndexOutOfBoundsException eee) { + } } @Test
participants (1)
-
jcouteau@users.labs.libre-entreprise.org