List of usage examples for org.apache.commons.lang3.mutable MutableBoolean booleanValue
public boolean booleanValue()
From source file:org.apache.asterix.external.classad.Operation.java
public static int doArithmetic(int op, Value v1, Value v2, Value result, ClassAdObjectPool objectPool) throws HyracksDataException { AMutableInt64 i1 = objectPool.int64Pool.get(); AMutableInt64 i2 = objectPool.int64Pool.get(); ClassAdTime t1 = objectPool.classAdTimePool.get(); AMutableDouble r1 = objectPool.doublePool.get(); MutableBoolean b1 = objectPool.boolPool.get(); // ensure the operands have arithmetic types if ((!v1.isIntegerValue() && !v1.isRealValue() && !v1.isAbsoluteTimeValue() && !v1.isRelativeTimeValue() && !v1.isBooleanValue()) || (op != OpKind_UNARY_MINUS_OP && !v2.isBooleanValue() && !v2.isIntegerValue() && !v2.isRealValue() && !v2.isAbsoluteTimeValue() && !v2.isRelativeTimeValue())) { result.setErrorValue();/* ww w. ja v a2 s .c o m*/ return (SigValues.SIG_CHLD1.ordinal() | SigValues.SIG_CHLD2.ordinal()); } // take care of the unary arithmetic operators if (op == OpKind_UNARY_MINUS_OP) { if (v1.isIntegerValue(i1)) { result.setIntegerValue((-1L) * i1.getLongValue()); return SigValues.SIG_CHLD1.ordinal(); } else if (v1.isRealValue(r1)) { result.setRealValue((-1) * r1.getDoubleValue()); return SigValues.SIG_CHLD1.ordinal(); } else if (v1.isRelativeTimeValue(t1)) { t1.setValue((-1) * t1.getTimeInMillis()); result.setRelativeTimeValue(t1); return (SigValues.SIG_CHLD1.ordinal()); } else if (v1.isBooleanValue(b1)) { result.setBooleanValue(!b1.booleanValue()); } else if (v1.isExceptional()) { // undefined or error --- same as operand result.setValue(v1); return SigValues.SIG_CHLD1.ordinal(); } // unary minus not defined on any other operand type result.setErrorValue(); return (SigValues.SIG_CHLD1.ordinal()); } // perform type promotions and proceed with arithmetic switch (coerceToNumber(v1, v2, objectPool)) { case INTEGER_VALUE: v1.isIntegerValue(i1); v2.isIntegerValue(i2); switch (op) { case OpKind_ADDITION_OP: result.setIntegerValue(i1.getLongValue() + i2.getLongValue()); return (SigValues.SIG_CHLD1.ordinal() | SigValues.SIG_CHLD2.ordinal()); case OpKind_SUBTRACTION_OP: result.setIntegerValue(i1.getLongValue() - i2.getLongValue()); return (SigValues.SIG_CHLD1.ordinal() | SigValues.SIG_CHLD2.ordinal()); case OpKind_MULTIPLICATION_OP: result.setIntegerValue(i1.getLongValue() * i2.getLongValue()); return (SigValues.SIG_CHLD1.ordinal() | SigValues.SIG_CHLD2.ordinal()); case OpKind_DIVISION_OP: if (i2.getLongValue() != 0L) { result.setIntegerValue(i1.getLongValue() / i2.getLongValue()); } else { result.setErrorValue(); } return (SigValues.SIG_CHLD1.ordinal() | SigValues.SIG_CHLD2.ordinal()); case OpKind_MODULUS_OP: if (i2.getLongValue() != 0) { result.setIntegerValue(i1.getLongValue() % i2.getLongValue()); } else { result.setErrorValue(); } return (SigValues.SIG_CHLD1.ordinal() | SigValues.SIG_CHLD2.ordinal()); default: // should not reach here throw new HyracksDataException("Should not get here"); } case REAL_VALUE: { return (doRealArithmetic(op, v1, v2, result, objectPool)); } case ABSOLUTE_TIME_VALUE: case RELATIVE_TIME_VALUE: { return (doTimeArithmetic(op, v1, v2, result, objectPool)); } default: // should not get here throw new HyracksDataException("Should not get here"); } }
From source file:org.apache.asterix.external.classad.Operation.java
public static int doLogical(int op, Value v1, Value v2, Value result, ClassAdObjectPool objectPool) throws HyracksDataException { MutableBoolean b1 = objectPool.boolPool.get(); MutableBoolean b2 = objectPool.boolPool.get(); // first coerece inputs to boolean if they are considered equivalent if (!v1.isBooleanValue(b1) && v1.isBooleanValueEquiv(b1)) { v1.setBooleanValue(b1.booleanValue()); }/*from www .j a v a 2s .c o m*/ if (!v2.isBooleanValue(b2) && v2.isBooleanValueEquiv(b2)) { v2.setBooleanValue(b2); } ValueType vt1 = v1.getType(); ValueType vt2 = v2.getType(); if (vt1 != ValueType.UNDEFINED_VALUE && vt1 != ValueType.ERROR_VALUE && vt1 != ValueType.BOOLEAN_VALUE) { result.setErrorValue(); return SigValues.SIG_CHLD1.ordinal(); } if (vt2 != ValueType.UNDEFINED_VALUE && vt2 != ValueType.ERROR_VALUE && vt2 != ValueType.BOOLEAN_VALUE) { result.setErrorValue(); return SigValues.SIG_CHLD2.ordinal(); } // handle unary operator if (op == OpKind_LOGICAL_NOT_OP) { if (vt1 == ValueType.BOOLEAN_VALUE) { result.setBooleanValue(!b1.booleanValue()); } else { result.setValue(v1); } return SigValues.SIG_CHLD1.ordinal(); } if (op == OpKind_LOGICAL_OR_OP) { if (vt1 == ValueType.BOOLEAN_VALUE && b1.booleanValue()) { result.setBooleanValue(true); return SigValues.SIG_CHLD1.ordinal(); } else if (vt1 == ValueType.ERROR_VALUE) { result.setErrorValue(); return SigValues.SIG_CHLD1.ordinal(); } else if (vt1 == ValueType.BOOLEAN_VALUE && !b1.booleanValue()) { result.setValue(v2); } else if (vt2 != ValueType.BOOLEAN_VALUE) { result.setValue(v2); } else if (b2.booleanValue()) { result.setBooleanValue(true); } else { result.setUndefinedValue(); } return (SigValues.SIG_CHLD1.ordinal() | SigValues.SIG_CHLD2.ordinal()); } else if (op == OpKind_LOGICAL_AND_OP) { if (vt1 == ValueType.BOOLEAN_VALUE && !b1.booleanValue()) { result.setBooleanValue(false); return SigValues.SIG_CHLD1.ordinal(); } else if (vt1 == ValueType.ERROR_VALUE) { result.setErrorValue(); return SigValues.SIG_CHLD1.ordinal(); } else if (vt1 == ValueType.BOOLEAN_VALUE && b1.booleanValue()) { result.setValue(v2); } else if (vt2 != ValueType.BOOLEAN_VALUE) { result.setValue(v2); } else if (!b2.booleanValue()) { result.setBooleanValue(false); } else { result.setUndefinedValue(); } return (SigValues.SIG_CHLD1.ordinal() | SigValues.SIG_CHLD2.ordinal()); } throw new HyracksDataException("Shouldn't reach here"); }
From source file:org.apache.asterix.external.classad.Operation.java
public static void compareBools(int op, Value v1, Value v2, Value result, ClassAdObjectPool objectPool) throws HyracksDataException { MutableBoolean b1 = objectPool.boolPool.get(); MutableBoolean b2 = objectPool.boolPool.get(); boolean compResult = false; v1.isBooleanValue(b1);/*from w ww. j a v a 2 s . co m*/ v2.isBooleanValue(b2); switch (op) { case OpKind_LESS_THAN_OP: compResult = (b1.compareTo(b2) < 0); break; case OpKind_LESS_OR_EQUAL_OP: compResult = (b1.compareTo(b2) <= 0); break; case OpKind_EQUAL_OP: compResult = (b1.booleanValue() == b2.booleanValue()); break; case OpKind_META_EQUAL_OP: compResult = (b1.booleanValue() == b2.booleanValue()); break; case OpKind_NOT_EQUAL_OP: compResult = (b1.booleanValue() != b2.booleanValue()); break; case OpKind_META_NOT_EQUAL_OP: compResult = (b1.booleanValue() != b2.booleanValue()); break; case OpKind_GREATER_THAN_OP: compResult = (b1.compareTo(b2) > 0); break; case OpKind_GREATER_OR_EQUAL_OP: compResult = (b1.compareTo(b2) >= 0); break; default: // should not get here throw new HyracksDataException("Should not get here"); } result.setBooleanValue(compResult); }
From source file:org.apache.asterix.external.classad.Operation.java
public static ValueType coerceToNumber(Value v1, Value v2, ClassAdObjectPool objectPool) { AMutableInt64 i = objectPool.int64Pool.get(); AMutableDouble r = objectPool.doublePool.get(); MutableBoolean b = objectPool.boolPool.get(); // either of v1, v2 not numerical? if (v1.isClassAdValue() || v2.isClassAdValue()) { return ValueType.CLASSAD_VALUE; }//from ww w . ja v a2s. c o m if (v1.isListValue() || v2.isListValue()) { return ValueType.LIST_VALUE; } if (v1.isStringValue() || v2.isStringValue()) { return ValueType.STRING_VALUE; } if (v1.isUndefinedValue() || v2.isUndefinedValue()) { return ValueType.UNDEFINED_VALUE; } if (v1.isErrorValue() || v2.isErrorValue()) { return ValueType.ERROR_VALUE; } if (v1.isAbsoluteTimeValue() || v2.isAbsoluteTimeValue()) { return ValueType.ABSOLUTE_TIME_VALUE; } if (v1.isRelativeTimeValue() || v2.isRelativeTimeValue()) { return ValueType.RELATIVE_TIME_VALUE; } // promote booleans to integers if (v1.isBooleanValue(b)) { if (b.booleanValue()) { v1.setIntegerValue(1); } else { v1.setIntegerValue(0); } } if (v2.isBooleanValue(b)) { if (b.booleanValue()) { v2.setIntegerValue(1); } else { v2.setIntegerValue(0); } } // both v1 and v2 of same numerical type if (v1.isIntegerValue(i) && v2.isIntegerValue(i)) { return ValueType.INTEGER_VALUE; } if (v1.isRealValue(r) && v2.isRealValue(r)) { return ValueType.REAL_VALUE; } // type promotions required if (v1.isIntegerValue(i) && v2.isRealValue(r)) { v1.setRealValue(i.getLongValue()); } else if (v1.isRealValue(r) && v2.isIntegerValue(i)) { v2.setRealValue(i.getLongValue()); } return ValueType.REAL_VALUE; }
From source file:org.apache.asterix.external.classad.Operation.java
public boolean flattenSpecials(EvalState state, Value val, ExprTreeHolder tree) throws HyracksDataException { ExprTreeHolder fChild1 = objectPool.mutableExprPool.get(); ExprTreeHolder fChild2 = objectPool.mutableExprPool.get(); ExprTreeHolder fChild3 = objectPool.mutableExprPool.get(); Value eval1 = objectPool.valuePool.get(); Value eval2 = objectPool.valuePool.get(); Value eval3 = objectPool.valuePool.get(); switch (opKind) { case OpKind_UNARY_PLUS_OP: case OpKind_UNARY_MINUS_OP: case OpKind_PARENTHESES_OP: case OpKind_LOGICAL_NOT_OP: case OpKind_BITWISE_NOT_OP: if (!child1.publicFlatten(state, eval1, fChild1)) { tree.setInnerTree(null);//w w w . j av a 2s. co m return false; } if (fChild1.getInnerTree() != null) { tree.setInnerTree(Operation.createOperation(opKind, fChild1, objectPool)); return (tree.getInnerTree() != null); } else { privateDoOperation(opKind, eval1, null, null, true, false, false, val, objectPool); tree.setInnerTree(null); eval1.setUndefinedValue(); return true; } case OpKind_TERNARY_OP: // Flatten the selector expression if (!child1.publicFlatten(state, eval1, fChild1)) { tree.setInnerTree(null); return false; } // check if selector expression collapsed to a non-undefined value if (fChild1.getInnerTree() == null && !eval1.isUndefinedValue()) { MutableBoolean b = objectPool.boolPool.get(); // if the selector is not boolean-equivalent, propagate error if (!eval1.isBooleanValueEquiv(b)) { val.setErrorValue(); eval1.setUndefinedValue(); tree.setInnerTree(null); return true; } // eval1 is either a real or an integer if (b.booleanValue()) { return child2.publicFlatten(state, val, tree); } else { return child3.publicFlatten(state, val, tree); } } else { // Flatten arms of the if expression if (!child2.publicFlatten(state, eval2, fChild2) || !child3.publicFlatten(state, eval3, fChild3)) { // clean up tree.setInnerTree(null); return false; } // if any arm collapsed into a value, make it a Literal if (fChild2.getInnerTree() == null) { fChild2.setInnerTree(Literal.createLiteral(eval2, objectPool)); } if (fChild3.getInnerTree() == null) { fChild3.setInnerTree(Literal.createLiteral(eval3, objectPool)); } if (fChild2.getInnerTree() == null || fChild3.getInnerTree() == null) { tree.setInnerTree(null); ; return false; } // fChild1 may be NULL if child1 Flattened to UNDEFINED if (fChild1.getInnerTree() == null) { fChild1.setInnerTree(child1.copy()); } tree.setInnerTree(Operation.createOperation(opKind, fChild1, fChild2, fChild3, objectPool)); if (tree.getInnerTree() == null) { return false; } return true; } case OpKind_SUBSCRIPT_OP: // Flatten both arguments if (!child1.publicFlatten(state, eval1, fChild1) || !child2.publicFlatten(state, eval2, fChild2)) { tree.setInnerTree(null); return false; } // if both arguments Flattened to values, Evaluate now if (fChild1.getInnerTree() == null && fChild2.getInnerTree() == null) { privateDoOperation(opKind, eval1, eval2, null, true, true, false, val, objectPool); tree.setInnerTree(null); return true; } // otherwise convert Flattened values into literals if (fChild1.getInnerTree() == null) { fChild1.setInnerTree(Literal.createLiteral(eval1, objectPool)); } if (fChild2.getInnerTree() == null) { fChild2.setInnerTree(Literal.createLiteral(eval2, objectPool)); } if (fChild1.getInnerTree() == null || fChild2.getInnerTree() == null) { tree.setInnerTree(null); return false; } tree.setInnerTree(Operation.createOperation(opKind, fChild1, fChild2, objectPool)); if (tree.getInnerTree() == null) { return false; } return true; default: throw new HyracksDataException("Should not get here"); } }
From source file:org.apache.asterix.external.classad.test.ClassAdUnitTester.java
/********************************************************************* * Function: test_classad/*from w ww . j a v a 2s .com*/ * Purpose: Test the ClassAd class. * @param objectPool * * @throws IOException *********************************************************************/ public static void testClassad(Parameters parameters, Results results, ClassAdObjectPool objectPool) throws IOException { ClassAdParser parser = new ClassAdParser(objectPool); boolean haveAttribute; boolean success; System.out.println("Testing the ClassAd class..."); String input_basic = "[ A = 3; B = 4.0; C = \"babyzilla\"; D = true; E = {1}; F = [ AA = 3; ]; G =\"deleteme\";]"; ClassAd basic = new ClassAd(objectPool); AMutableInt64 i = new AMutableInt64(0); MutableBoolean b = new MutableBoolean(); AMutableDouble r = new AMutableDouble(0); AMutableCharArrayString s = new AMutableCharArrayString(); ClassAd c = new ClassAd(objectPool); // ExprList *l; basic = parser.parseClassAd(input_basic); /* ----- Test EvaluateAttr* ----- */ haveAttribute = basic.evaluateAttrInt("A", i); test("Have attribute A", (haveAttribute == true), "test_classad 1", results); test("A is 3", (i.getLongValue() == 3), "test_classad 2", results); haveAttribute = basic.evaluateAttrReal("B", r); test("Have attribute B", (haveAttribute == true), "test_classad 3", results); test("B is 4.0", (r.getDoubleValue() == 4.0), "test_classad 4", results); haveAttribute = basic.evaluateAttrString("C", s); test("Have attribute C", (haveAttribute == true), "test_classad 5", results); test("C is 'babyzilla'", (s.compareTo("babyzilla") == 0), "test_classad 6", results); haveAttribute = basic.evaluateAttrBool("D", b); test("Have attribute D", (haveAttribute == true), "test_classad 7", results); test("D is true", (b.booleanValue() == true), "test_classad 8", results); /* ----- Test basic insert and delete ----- */ success = basic.insertAttr("new", 4); test("InsertAttr claims to have worked", (success == true), "test_classad 9", results); haveAttribute = basic.evaluateAttrInt("new", i); test("Have new attribute", (haveAttribute == true), "test_classad 10", results); test("new attribute is 4", i.getLongValue() == 4, "test_classad 11", results); success = basic.delete("new"); test("Delete claims to have worked", (success == true), "test_classad 12", results); haveAttribute = basic.evaluateAttrInt("new", i); test("New attribute was deleted", (haveAttribute == false), "test_classad 13", results); success = basic.delete("G"); test("DELETE claims to have worked", (success == true), "test_classad 14", results); haveAttribute = basic.evaluateAttrString("G", s); test("Attribute G was deleted", (haveAttribute == false), "test_classad 15", results); basic = null; /* ----- Test GetExternalReferences ----- */ String inputRef = "[ Rank=Member(\"LCG-2_1_0\",other.Environment) ? other.Time/seconds : other.Time/minutes; minutes=60; ]"; TreeSet<String> refs = new TreeSet<String>(); ExprTree rank; c = parser.parseClassAd(inputRef); test("Made classad_ref", (c != null), "Test GetExternalReferences 1", results); if (c != null) { rank = c.lookup("Rank"); test("Rank exists", (rank != null), "Test GetExternalReferences 2", results); if (rank != null) { boolean haveReferences; if ((haveReferences = c.getExternalReferences(rank, refs, true))) { test("have_references", (haveReferences == true), "Test GetExternalReferences 3", results); if (haveReferences) { boolean haveEnvironment; boolean haveTime; boolean haveSeconds; boolean haveOther; haveEnvironment = false; haveTime = false; haveSeconds = false; haveOther = false; for (String entry : refs) { if (entry.compareTo("other.Environment") == 0) { haveEnvironment = true; } else if (entry.compareTo("other.Time") == 0) { haveTime = true; } else if (entry.compareTo("seconds") == 0) { haveSeconds = true; } else { haveOther = true; } } test("Have external reference to Environment", (haveEnvironment == true), "Test GetExternalReferences 4", results); test("Have external reference to Time", (haveTime == true), "Test GetExternalReferences 5", results); test("Have external reference to seconds", (haveSeconds == true), "Test GetExternalReferences 6", results); test("Have no other external references", (haveOther != true), "Test GetExternalReferences 7", results); } } } c = null; } // This ClassAd may cause problems. Perhaps a memory leak. // This test is only useful when run under valgrind. String memoryProblemClassad = "[ Updates = [status = \"request_completed\"; timestamp = absTime(\"2004-12-16T18:10:59-0600]\")] ]"; c = parser.parseClassAd(memoryProblemClassad); /* ----- Test Parsing multiple ClassAds ----- */ String twoClassads = "[ a = 3; ][ b = 4; ]"; ClassAd classad1 = new ClassAd(objectPool); ClassAd classad2 = new ClassAd(objectPool); AMutableInt32 offset = new AMutableInt32(0); parser.parseClassAd(twoClassads, classad1, offset); test("Have good offset #1", offset.getIntegerValue().intValue() == 10, "Test Parsing multiple ClassAds 1", results); parser.parseClassAd(twoClassads, classad2, offset); test("Have good offset #2", offset.getIntegerValue().intValue() == 20, "Test Parsing multiple ClassAds 2", results); /* ----- Test chained ClassAds ----- */ // classad1 and classad2 from above test are used. ClassAd classad3 = new ClassAd(objectPool); classad1.chainToAd(classad2); test("classad1's parent is classad2", classad1.getChainedParentAd().equals(classad2), "Test chained ClassAds 1", results); haveAttribute = classad1.evaluateAttrInt("b", i); test("chain has attribute b from parent", (haveAttribute == true), "Test chained ClassAds 2", results); test("chain attribute b from parent is 4", (i.getLongValue() == 4), "Test chained ClassAds 3", results); haveAttribute = classad1.evaluateAttrInt("a", i); test("chain has attribute a from self", (haveAttribute == true), "Test chained ClassAds 4", results); test("chain attribute a is 3", (i.getLongValue() == 3), "Test chained ClassAds 5", results); // Now we modify classad2 (parent) to contain "a". success = classad2.insertAttr("a", 7); test("insert a into parent", (success == true), "Test chained ClassAds 6", results); haveAttribute = classad1.evaluateAttrInt("a", i); test("chain has attribute a from self (overriding parent)", (haveAttribute == true), "Test chained ClassAds 7", results); test("chain attribute a is 3 (overriding parent)", (i.getLongValue() == 3), "Test chained ClassAds 8", results); haveAttribute = classad2.evaluateAttrInt("a", i); test("chain parent has attribute a", (haveAttribute == true), "Test chained ClassAds 9", results); test("chain parent attribute a is 7", (i.getLongValue() == 7), "Test chained ClassAds 10", results); success = classad3.copyFromChain(classad1); test("copy from chain succeeded", (success == true), "Test chained ClassAds 11", results); haveAttribute = classad3.evaluateAttrInt("b", i); test("copy of chain has attribute b", (haveAttribute == true), "Test chained ClassAds 12", results); test("copy of chain has attribute b==4", (i.getLongValue() == 4), "Test chained ClassAds 13", results); success = classad3.insertAttr("c", 6); test("insert into copy of chain succeeded", (success == true), "Test chained ClassAds 14", results); classad3.copyFromChain(classad1); haveAttribute = classad3.evaluateAttrInt("c", i); test("copy of chain is clean", (haveAttribute == false), "Test chained ClassAds 15", results); classad3.insertAttr("c", 6); success = classad3.updateFromChain(classad1); test("update from chain succeeded", (success == true), "Test chained ClassAds 16", results); haveAttribute = classad3.evaluateAttrInt("c", i); test("update from chain is merged", (haveAttribute == true), "Test chained ClassAds 17", results); test("update from chain has attribute c==6", (i.getLongValue() == 6), "Test chained ClassAds 18", results); }
From source file:org.apache.asterix.external.classad.test.ClassAdUnitTester.java
/********************************************************************* * Function: test_exprlist//from w w w .ja v a2s . c om * Purpose: Test the ExprList class. * * @throws IOException *********************************************************************/ public static void testExprList(Parameters parameters, Results results, ClassAdObjectPool objectPool) throws IOException { System.out.println("Testing the ExprList class..."); Literal literal10; Literal literal20; Literal literal21; List<ExprTree> vector1 = new ArrayList<ExprTree>(); List<ExprTree> vector2 = new ArrayList<ExprTree>(); ExprList list0; ExprList list0Copy; ExprList list1; ExprList list1Copy; ExprList list2; ExprList list2Copy; /* ----- Setup Literals, the vectors, then ExprLists ----- */ literal10 = Literal.createReal("1.0", objectPool); literal20 = Literal.createReal("2.0", objectPool); literal21 = Literal.createReal("2.1", objectPool); vector1.add(literal10); vector2.add(literal20); vector2.add(literal21); list0 = new ExprList(objectPool); list1 = new ExprList(vector1, objectPool); list2 = new ExprList(vector2, objectPool); /* ----- Did the lists get made? ----- */ test("Made list 0", (list0 != null), "Did the lists get made? 0", results); test("Made list 1", (list1 != null), "Did the lists get made? 1", results); test("Made list 2", (list2 != null), "Did the lists get made? 2", results); /* ----- Are these lists identical to themselves? ----- */ test("ExprList identical 0", list0.sameAs(list0), "Are these lists identical to themselves? 0", results); test("ExprList identical 1", list1.sameAs(list1), "Are these lists identical to themselves? 1", results); test("ExprList identical 2", list2.sameAs(list2), "Are these lists identical to themselves? 2", results); /* ----- Are they different from each other? ----- */ test("ExprLists different 0-1", !(list0.sameAs(list1)), "Are these lists different from each other? 0", results); test("ExprLists different 1-2", !(list1.sameAs(list2)), "Are these lists identical from each other? 1", results); test("ExprLists different 0-2", !(list0.sameAs(list2)), "Are these lists identical from each other? 2", results); /* ----- Check the size of the ExprLists to make sure they are ok ----- */ test("ExprList size 0", (list0.size() == 0), "check list size? 0", results); test("ExprList size 1", (list1.size() == 1), "check list size? 1", results); test("ExprList size 2", (list2.size() == 2), "check list size? 2", results); /* ----- Make copies of the ExprLists ----- */ list0Copy = (ExprList) list0.copy(); list1Copy = (ExprList) list1.copy(); list2Copy = (ExprList) list2.copy(); /* ----- Did the copies get made? ----- */ test("Made copy of list 0", (list0Copy != null), "Did the copies get made? 0", results); test("Made copy of list 1", (list1Copy != null), "Did the copies get made? 1", results); test("Made copy of list 2", (list2Copy != null), "Did the copies get made? 2", results); /* ----- Are they identical to the originals? ----- */ test("ExprList self-identity 0", (list0.sameAs(list0Copy)), "Are they identical to the originals? 0", results); test("ExprList self-identity 1", (list1.sameAs(list1Copy)), "Are they identical to the originals? 1", results); test("ExprList self-identity 2", (list2.sameAs(list2Copy)), "Are they identical to the originals? 2", results); /* ----- Test adding and deleting from a list ----- */ Literal add; add = Literal.createReal("2.2", objectPool); if (list2Copy != null) { list2Copy.insert(add); test("Edited list is different", !(list2.sameAs(list2Copy)), "Test adding and deleting from a list 0", results); list2Copy.erase(list2Copy.size() - 1); test("Twice Edited list is same", (list2.sameAs(list2Copy)), "Test adding and deleting from a list 1", results); } // Note that we do not delete the Literals that we created, because // they should have been deleted when the list was deleted. /* ----- Test an ExprList bug that Nate Mueller found ----- */ ClassAd classad; ClassAdParser parser = new ClassAdParser(objectPool); MutableBoolean b = new MutableBoolean(); boolean haveAttribute; boolean canEvaluate; Value value = new Value(objectPool); String listClassadText = "[foo = 3; have_foo = member(foo, {1, 2, 3});]"; classad = parser.parseClassAd(listClassadText); haveAttribute = classad.evaluateAttrBool("have_foo", b); test("Can evaluate list in member function", (haveAttribute == true && b.booleanValue() == true), "Test an ExprList bug that Nate Mueller found 0", results); canEvaluate = classad.evaluateExpr("member(foo, {1, 2, blah, 3})", value); test("Can evaluate list in member() outside of ClassAd", canEvaluate == true, "Test an ExprList bug that Nate Mueller found 1", results); return; }
From source file:org.apache.asterix.external.classad.test.ClassAdUnitTester.java
/********************************************************************* * Function: test_value//from ww w . ja v a2s.c om * Purpose: Test the Value class. * * @throws HyracksDataException *********************************************************************/ public static void testValue(Parameters parameters, Results results, ClassAdObjectPool objectPool) throws HyracksDataException { Value v = new Value(objectPool); boolean isExpectedType; System.out.println("Testing the Value class..."); test("New value is undefined", (v.isUndefinedValue()), "test_value 1", results); test("New value isn't boolean", !(v.isBooleanValue()), "test_value 2", results); test("GetType gives UNDEFINED_VALUE", (v.getType() == ValueType.UNDEFINED_VALUE), "test_value 3", results); v.setErrorValue(); test("Is error value", (v.isErrorValue()), "test_value 4", results); test("GetType gives ERROR_VALUE", (v.getType() == ValueType.ERROR_VALUE), "test_value 5", results); MutableBoolean b = new MutableBoolean(); v.setBooleanValue(true); isExpectedType = v.isBooleanValue(b); test("Value is not undefined", !(v.isUndefinedValue()), "Value is not undefined", results); test("Value is boolean", (v.isBooleanValue()), "Value is boolean", results); test("Try 2: New value is boolean", (isExpectedType == true), "Try 2: New value is boolean", results); test("Boolean is true", (b.booleanValue() == true), "Boolean is true", results); test("GetType gives BOOLEAN_VALUE", (v.getType() == ValueType.BOOLEAN_VALUE), "GetType gives BOOLEAN_VALUE", results); AMutableDouble r = new AMutableDouble(0.0); v.setRealValue(1.0); isExpectedType = v.isRealValue(r); test("Value is real", isExpectedType, results); test("Real is 1.0", (r.getDoubleValue() == 1.0), results); test("GetType gives REAL_VALUE", (v.getType() == ValueType.REAL_VALUE), results); test("Real is a number", v.isNumber(), results); AMutableInt64 i = new AMutableInt64(0); v.setIntegerValue(1); isExpectedType = v.isIntegerValue(i); test("Value is integer", isExpectedType, results); test("Integer is 1", (i.getLongValue() == 1), results); test("GetType gives INTEGER_VALUE", (v.getType() == ValueType.INTEGER_VALUE), results); test("Integer is a number", v.isNumber(), results); AMutableCharArrayString s = new AMutableCharArrayString(); v.setStringValue("Robert-Houdin"); isExpectedType = v.isStringValue(s); test("Value is String", isExpectedType, results); test("String is 'Robert-Houdin'", (0 == s.compareTo("Robert-Houdin")), results); test("GetType gives STRING_VALUE", (v.getType() == ValueType.STRING_VALUE), results); ClassAdTime at = new ClassAdTime(10, 36000000); v.setAbsoluteTimeValue(at); at.setValue(0); at.setTimeZone(0); isExpectedType = v.isAbsoluteTimeValue(at); test("Value is absolute time", isExpectedType, results); test("Absolute time is 10, 0", (10 == at.getTime() && 36000000 == at.getOffset()), results); test("GetType gives ABSOLUTE_TIME_VALUE", (v.getType() == ValueType.ABSOLUTE_TIME_VALUE), results); ClassAdTime rt = new ClassAdTime(10, false); v.setRelativeTimeValue(10); isExpectedType = v.isRelativeTimeValue(rt); test("Value is relative time", isExpectedType, results); test("Relative time is 10", (10 == rt.getRelativeTime()), results); test("GetType gives RELATIVE_TIME_VALUE", (v.getType() == ValueType.RELATIVE_TIME_VALUE), results); ExprList l = new ExprList(objectPool); ExprList ll = new ExprList(objectPool); v.setListValue(l); isExpectedType = v.isListValue(ll); test("Value is list value", isExpectedType, results); test("List value is correct", l.equals(ll), results); test("GetType gives LIST_VALUE", (v.getType() == ValueType.LIST_VALUE), results); ExprList sl = new ExprList(true, objectPool); ll = new ExprList(true, objectPool); v.setListValue(sl); isExpectedType = v.isListValue(ll); test("Value is list value", isExpectedType, results); test("List value is correct", sl.equals(ll), results); test("GetType gives SLIST_VALUE", (v.getType() == ValueType.SLIST_VALUE), results); ClassAd c = new ClassAd(objectPool); c.insertAttr("test_int", 10); ClassAd cc = new ClassAd(objectPool); v.setClassAdValue(c); isExpectedType = v.isClassAdValue(cc); test("Value is ClassAd value", isExpectedType, results); test("ClassAd value is correct", c.equals(cc), results); test("GetType gives CLASSAD_VALUE", (v.getType() == ValueType.CLASSAD_VALUE), results); return; }
From source file:org.apache.asterix.external.classad.Value.java
public static boolean convertValueToRealValue(Value value, Value realValue, ClassAdObjectPool objectPool) throws HyracksDataException { boolean could_convert; AMutableCharArrayString buf = objectPool.strPool.get(); int endIndex; char end;//from w w w.j a v a2 s . co m AMutableInt64 ivalue = objectPool.int64Pool.get(); ClassAdTime atvalue = objectPool.classAdTimePool.get(); MutableBoolean bvalue = objectPool.boolPool.get(); double rvalue; NumberFactor nf = NumberFactor.NO_FACTOR; switch (value.getType()) { case UNDEFINED_VALUE: realValue.setUndefinedValue(); could_convert = false; break; case ERROR_VALUE: case CLASSAD_VALUE: case LIST_VALUE: case SLIST_VALUE: realValue.setErrorValue(); could_convert = false; break; case STRING_VALUE: could_convert = true; value.isStringValue(buf); endIndex = buf.fistNonDoubleDigitChar(); if (endIndex < 0) { // no non digit String buffString = buf.toString(); if (buffString.contains("INF")) { buffString = buffString.replace("INF", "Infinity"); } rvalue = Double.parseDouble(buffString); nf = NumberFactor.NO_FACTOR; } else { rvalue = Double.parseDouble(buf.substr(0, endIndex)); end = buf.charAt(endIndex); switch (Character.toUpperCase(end)) { case 'B': nf = NumberFactor.B_FACTOR; break; case 'K': nf = NumberFactor.K_FACTOR; break; case 'M': nf = NumberFactor.M_FACTOR; break; case 'G': nf = NumberFactor.G_FACTOR; break; case 'T': nf = NumberFactor.T_FACTOR; break; case '\0': nf = NumberFactor.NO_FACTOR; break; default: nf = NumberFactor.NO_FACTOR; break; } } if (could_convert) { realValue.setRealValue(rvalue * Value.ScaleFactor[nf.ordinal()]); } break; case BOOLEAN_VALUE: value.isBooleanValue(bvalue); realValue.setRealValue(bvalue.booleanValue() ? 1.0 : 0.0); could_convert = true; break; case INTEGER_VALUE: value.isIntegerValue(ivalue); realValue.setRealValue(ivalue.getLongValue()); could_convert = true; break; case REAL_VALUE: realValue.setValue(value); could_convert = true; break; case ABSOLUTE_TIME_VALUE: value.isAbsoluteTimeValue(atvalue); realValue.setRealValue(atvalue.getTimeInMillis() / 1000.0); could_convert = true; break; case RELATIVE_TIME_VALUE: value.isRelativeTimeValue(atvalue); realValue.setRealValue(atvalue.getRelativeTime() / 1000.0); could_convert = true; break; default: could_convert = false; // Make gcc's -Wuninitalized happy throw new HyracksDataException("Should not reach here"); } return could_convert; }
From source file:org.apache.asterix.external.classad.Value.java
public static boolean convertValueToIntegerValue(Value value, Value integerValue, ClassAdObjectPool objectPool) throws HyracksDataException { boolean could_convert; AMutableCharArrayString buf = objectPool.strPool.get(); char end;/*w w w . ja va 2s. c o m*/ AMutableInt64 ivalue = objectPool.int64Pool.get(); AMutableDouble rtvalue = objectPool.doublePool.get(); ClassAdTime atvalue = objectPool.classAdTimePool.get(); MutableBoolean bvalue = objectPool.boolPool.get(); NumberFactor nf; switch (value.getType()) { case UNDEFINED_VALUE: integerValue.setUndefinedValue(); could_convert = false; break; case ERROR_VALUE: case CLASSAD_VALUE: case LIST_VALUE: case SLIST_VALUE: integerValue.setErrorValue(); could_convert = false; break; case STRING_VALUE: could_convert = true; value.isStringValue(buf); int endIndex = buf.firstNonDigitChar(); if (endIndex < 0) { // no non digit ivalue.setValue(Long.parseLong(buf.toString())); nf = NumberFactor.NO_FACTOR; break; } else { ivalue.setValue(Long.parseLong(buf.substr(0, endIndex))); end = buf.charAt(endIndex); switch (Character.toUpperCase(end)) { case 'B': nf = NumberFactor.B_FACTOR; break; case 'K': nf = NumberFactor.K_FACTOR; break; case 'M': nf = NumberFactor.M_FACTOR; break; case 'G': nf = NumberFactor.G_FACTOR; break; case 'T': nf = NumberFactor.T_FACTOR; break; case '\0': nf = NumberFactor.NO_FACTOR; break; default: nf = NumberFactor.NO_FACTOR; break; } if (could_convert) { integerValue .setIntegerValue((long) ((ivalue.getLongValue() * Value.ScaleFactor[nf.ordinal()]))); } } break; case BOOLEAN_VALUE: value.isBooleanValue(bvalue); integerValue.setIntegerValue(bvalue.booleanValue() ? 1 : 0); could_convert = true; break; case INTEGER_VALUE: integerValue.setValue(value); could_convert = true; break; case REAL_VALUE: value.isRealValue(rtvalue); integerValue.setIntegerValue((long) rtvalue.getDoubleValue()); could_convert = true; break; case ABSOLUTE_TIME_VALUE: value.isAbsoluteTimeValue(atvalue); integerValue.setIntegerValue(atvalue.getTimeInMillis() / 1000L); could_convert = true; break; case RELATIVE_TIME_VALUE: value.isRelativeTimeValue(atvalue); integerValue.setIntegerValue((atvalue.getTime() / 1000L)); could_convert = true; break; default: could_convert = false; // Make gcc's -Wuninitalized happy throw new HyracksDataException("Should not reach here"); } return could_convert; }