/*
* Copyright (c) 2013, the Dart project authors.
*
* Licensed under the Eclipse Public License v1.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.eclipse.org/legal/epl-v10.html
*
* 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.dart.engine.internal.object;
import com.google.dart.engine.EngineTestCase;
import com.google.dart.engine.internal.resolver.TestTypeProvider;
import com.google.dart.engine.internal.resolver.TypeProvider;
import com.google.dart.engine.utilities.translation.DartBlockBody;
import java.math.BigInteger;
import java.util.HashMap;
import java.util.Map;
public class DartObjectImplTest extends EngineTestCase {
TypeProvider typeProvider = new TestTypeProvider();
public void fail_add_knownString_knownString() throws EvaluationException {
fail("New constant semantics are not yet enabled");
assertAdd(stringValue("ab"), stringValue("a"), stringValue("b"));
}
public void fail_add_knownString_unknownString() throws EvaluationException {
fail("New constant semantics are not yet enabled");
assertAdd(stringValue(null), stringValue("a"), stringValue(null));
}
public void fail_add_unknownString_knownString() throws EvaluationException {
fail("New constant semantics are not yet enabled");
assertAdd(stringValue(null), stringValue(null), stringValue("b"));
}
public void fail_add_unknownString_unknownString() throws EvaluationException {
fail("New constant semantics are not yet enabled");
assertAdd(stringValue(null), stringValue(null), stringValue(null));
}
public void test_add_knownDouble_knownDouble() throws EvaluationException {
assertAdd(doubleValue(3.0), doubleValue(1.0), doubleValue(2.0));
}
public void test_add_knownDouble_knownInt() throws EvaluationException {
assertAdd(doubleValue(3.0), doubleValue(1.0), intValue(2));
}
public void test_add_knownDouble_unknownDouble() throws EvaluationException {
assertAdd(doubleValue(null), doubleValue(1.0), doubleValue(null));
}
public void test_add_knownDouble_unknownInt() throws EvaluationException {
assertAdd(doubleValue(null), doubleValue(1.0), intValue(null));
}
public void test_add_knownInt_knownInt() throws EvaluationException {
assertAdd(intValue(3), intValue(1), intValue(2));
}
public void test_add_knownInt_knownString() throws EvaluationException {
assertAdd(null, intValue(1), stringValue("2"));
}
public void test_add_knownInt_unknownDouble() throws EvaluationException {
assertAdd(doubleValue(null), intValue(1), doubleValue(null));
}
public void test_add_knownInt_unknownInt() throws EvaluationException {
assertAdd(intValue(null), intValue(1), intValue(null));
}
public void test_add_knownString_knownInt() throws EvaluationException {
assertAdd(null, stringValue("1"), intValue(2));
}
public void test_add_unknownDouble_knownDouble() throws EvaluationException {
assertAdd(doubleValue(null), doubleValue(null), doubleValue(2.0));
}
public void test_add_unknownDouble_knownInt() throws EvaluationException {
assertAdd(doubleValue(null), doubleValue(null), intValue(2));
}
public void test_add_unknownInt_knownDouble() throws EvaluationException {
assertAdd(doubleValue(null), intValue(null), doubleValue(2.0));
}
public void test_add_unknownInt_knownInt() throws EvaluationException {
assertAdd(intValue(null), intValue(null), intValue(2));
}
public void test_bitAnd_knownInt_knownInt() throws EvaluationException {
assertBitAnd(intValue(2), intValue(6), intValue(3));
}
public void test_bitAnd_knownInt_knownString() throws EvaluationException {
assertBitAnd(null, intValue(6), stringValue("3"));
}
public void test_bitAnd_knownInt_unknownInt() throws EvaluationException {
assertBitAnd(intValue(null), intValue(6), intValue(null));
}
public void test_bitAnd_knownString_knownInt() throws EvaluationException {
assertBitAnd(null, stringValue("6"), intValue(3));
}
public void test_bitAnd_unknownInt_knownInt() throws EvaluationException {
assertBitAnd(intValue(null), intValue(null), intValue(3));
}
public void test_bitAnd_unknownInt_unknownInt() throws EvaluationException {
assertBitAnd(intValue(null), intValue(null), intValue(null));
}
public void test_bitNot_knownInt() throws EvaluationException {
assertBitNot(intValue(-4), intValue(3));
}
public void test_bitNot_knownString() throws EvaluationException {
assertBitNot(null, stringValue("6"));
}
public void test_bitNot_unknownInt() throws EvaluationException {
assertBitNot(intValue(null), intValue(null));
}
public void test_bitOr_knownInt_knownInt() throws EvaluationException {
assertBitOr(intValue(7), intValue(6), intValue(3));
}
public void test_bitOr_knownInt_knownString() throws EvaluationException {
assertBitOr(null, intValue(6), stringValue("3"));
}
public void test_bitOr_knownInt_unknownInt() throws EvaluationException {
assertBitOr(intValue(null), intValue(6), intValue(null));
}
public void test_bitOr_knownString_knownInt() throws EvaluationException {
assertBitOr(null, stringValue("6"), intValue(3));
}
public void test_bitOr_unknownInt_knownInt() throws EvaluationException {
assertBitOr(intValue(null), intValue(null), intValue(3));
}
public void test_bitOr_unknownInt_unknownInt() throws EvaluationException {
assertBitOr(intValue(null), intValue(null), intValue(null));
}
public void test_bitXor_knownInt_knownInt() throws EvaluationException {
assertBitXor(intValue(5), intValue(6), intValue(3));
}
public void test_bitXor_knownInt_knownString() throws EvaluationException {
assertBitXor(null, intValue(6), stringValue("3"));
}
public void test_bitXor_knownInt_unknownInt() throws EvaluationException {
assertBitXor(intValue(null), intValue(6), intValue(null));
}
public void test_bitXor_knownString_knownInt() throws EvaluationException {
assertBitXor(null, stringValue("6"), intValue(3));
}
public void test_bitXor_unknownInt_knownInt() throws EvaluationException {
assertBitXor(intValue(null), intValue(null), intValue(3));
}
public void test_bitXor_unknownInt_unknownInt() throws EvaluationException {
assertBitXor(intValue(null), intValue(null), intValue(null));
}
public void test_concatenate_knownInt_knownString() throws EvaluationException {
assertConcatenate(null, intValue(2), stringValue("def"));
}
public void test_concatenate_knownString_knownInt() throws EvaluationException {
assertConcatenate(null, stringValue("abc"), intValue(3));
}
public void test_concatenate_knownString_knownString() throws EvaluationException {
assertConcatenate(stringValue("abcdef"), stringValue("abc"), stringValue("def"));
}
public void test_concatenate_knownString_unknownString() throws EvaluationException {
assertConcatenate(stringValue(null), stringValue("abc"), stringValue(null));
}
public void test_concatenate_unknownString_knownString() throws EvaluationException {
assertConcatenate(stringValue(null), stringValue(null), stringValue("def"));
}
public void test_divide_knownDouble_knownDouble() throws EvaluationException {
assertDivide(doubleValue(3.0), doubleValue(6.0), doubleValue(2.0));
}
public void test_divide_knownDouble_knownInt() throws EvaluationException {
assertDivide(doubleValue(3.0), doubleValue(6.0), intValue(2));
}
public void test_divide_knownDouble_unknownDouble() throws EvaluationException {
assertDivide(doubleValue(null), doubleValue(6.0), doubleValue(null));
}
public void test_divide_knownDouble_unknownInt() throws EvaluationException {
assertDivide(doubleValue(null), doubleValue(6.0), intValue(null));
}
public void test_divide_knownInt_knownInt() throws EvaluationException {
assertDivide(intValue(3), intValue(6), intValue(2));
}
public void test_divide_knownInt_knownString() throws EvaluationException {
assertDivide(null, intValue(6), stringValue("2"));
}
public void test_divide_knownInt_unknownDouble() throws EvaluationException {
assertDivide(doubleValue(null), intValue(6), doubleValue(null));
}
public void test_divide_knownInt_unknownInt() throws EvaluationException {
assertDivide(intValue(null), intValue(6), intValue(null));
}
public void test_divide_knownString_knownInt() throws EvaluationException {
assertDivide(null, stringValue("6"), intValue(2));
}
public void test_divide_unknownDouble_knownDouble() throws EvaluationException {
assertDivide(doubleValue(null), doubleValue(null), doubleValue(2.0));
}
public void test_divide_unknownDouble_knownInt() throws EvaluationException {
assertDivide(doubleValue(null), doubleValue(null), intValue(2));
}
public void test_divide_unknownInt_knownDouble() throws EvaluationException {
assertDivide(doubleValue(null), intValue(null), doubleValue(2.0));
}
public void test_divide_unknownInt_knownInt() throws EvaluationException {
assertDivide(intValue(null), intValue(null), intValue(2));
}
public void test_equalEqual_bool_false() throws EvaluationException {
assertEqualEqual(boolValue(false), boolValue(false), boolValue(true));
}
public void test_equalEqual_bool_true() throws EvaluationException {
assertEqualEqual(boolValue(true), boolValue(true), boolValue(true));
}
public void test_equalEqual_bool_unknown() throws EvaluationException {
assertEqualEqual(boolValue(null), boolValue(null), boolValue(false));
}
public void test_equalEqual_double_false() throws EvaluationException {
assertEqualEqual(boolValue(false), doubleValue(2.0), doubleValue(4.0));
}
public void test_equalEqual_double_true() throws EvaluationException {
assertEqualEqual(boolValue(true), doubleValue(2.0), doubleValue(2.0));
}
public void test_equalEqual_double_unknown() throws EvaluationException {
assertEqualEqual(boolValue(null), doubleValue(1.0), doubleValue(null));
}
public void test_equalEqual_int_false() throws EvaluationException {
assertEqualEqual(boolValue(false), intValue(-5), intValue(5));
}
public void test_equalEqual_int_true() throws EvaluationException {
assertEqualEqual(boolValue(true), intValue(5), intValue(5));
}
public void test_equalEqual_int_unknown() throws EvaluationException {
assertEqualEqual(boolValue(null), intValue(null), intValue(3));
}
public void test_equalEqual_list_empty() throws EvaluationException {
assertEqualEqual(null, listValue(), listValue());
}
public void test_equalEqual_list_false() throws EvaluationException {
assertEqualEqual(null, listValue(), listValue());
}
public void test_equalEqual_map_empty() throws EvaluationException {
assertEqualEqual(null, mapValue(), mapValue());
}
public void test_equalEqual_map_false() throws EvaluationException {
assertEqualEqual(null, mapValue(), mapValue());
}
public void test_equalEqual_null() throws EvaluationException {
assertEqualEqual(boolValue(true), nullValue(), nullValue());
}
public void test_equalEqual_string_false() throws EvaluationException {
assertEqualEqual(boolValue(false), stringValue("abc"), stringValue("def"));
}
public void test_equalEqual_string_true() throws EvaluationException {
assertEqualEqual(boolValue(true), stringValue("abc"), stringValue("abc"));
}
public void test_equalEqual_string_unknown() throws EvaluationException {
assertEqualEqual(boolValue(null), stringValue(null), stringValue("def"));
}
public void test_equals_list_false_differentSizes() throws EvaluationException {
assertFalse(listValue(boolValue(true)).equals(listValue(boolValue(true), boolValue(false))));
}
public void test_equals_list_false_sameSize() throws EvaluationException {
assertFalse(listValue(boolValue(true)).equals(listValue(boolValue(false))));
}
public void test_equals_list_true_empty() throws EvaluationException {
assertEquals(listValue(), listValue());
}
public void test_equals_list_true_nonEmpty() throws EvaluationException {
assertEquals(listValue(boolValue(true)), listValue(boolValue(true)));
}
public void test_equals_map_true_empty() throws EvaluationException {
assertEquals(mapValue(), mapValue());
}
public void test_equals_symbol_false() throws EvaluationException {
assertFalse(symbolValue("a").equals(symbolValue("b")));
}
public void test_equals_symbol_true() throws EvaluationException {
assertEquals(symbolValue("a"), symbolValue("a"));
}
public void test_getValue_bool_false() {
assertEquals(Boolean.FALSE, boolValue(false).getValue());
}
public void test_getValue_bool_true() {
assertEquals(Boolean.TRUE, boolValue(true).getValue());
}
public void test_getValue_bool_unknown() {
assertNull(boolValue(null).getValue());
}
public void test_getValue_double_known() {
double value = 2.3;
assertEquals(value, doubleValue(value).getValue());
}
public void test_getValue_double_unknown() {
assertNull(doubleValue(null).getValue());
}
public void test_getValue_int_known() {
int value = 23;
assertEquals(BigInteger.valueOf(value), intValue(value).getValue());
}
public void test_getValue_int_unknown() {
assertNull(intValue(null).getValue());
}
public void test_getValue_list_empty() {
Object result = listValue().getValue();
assertInstanceOfObjectArray(result);
Object[] array = (Object[]) result;
assertLength(0, array);
}
public void test_getValue_list_valid() {
Object result = listValue(intValue(23)).getValue();
assertInstanceOfObjectArray(result);
Object[] array = (Object[]) result;
assertLength(1, array);
}
@SuppressWarnings("rawtypes")
public void test_getValue_map_empty() {
Object result = mapValue().getValue();
assertInstanceOf(Map.class, result);
Map map = (Map) result;
assertSizeOfMap(0, map);
}
@SuppressWarnings("rawtypes")
public void test_getValue_map_valid() {
Object result = mapValue(stringValue("key"), stringValue("value")).getValue();
assertInstanceOf(Map.class, result);
Map map = (Map) result;
assertSizeOfMap(1, map);
}
public void test_getValue_null() {
assertNull(nullValue().getValue());
}
public void test_getValue_string_known() {
String value = "twenty-three";
assertEquals(value, stringValue(value).getValue());
}
public void test_getValue_string_unknown() {
assertNull(stringValue(null).getValue());
}
public void test_greaterThan_knownDouble_knownDouble_false() throws EvaluationException {
assertGreaterThan(boolValue(false), doubleValue(1.0), doubleValue(2.0));
}
public void test_greaterThan_knownDouble_knownDouble_true() throws EvaluationException {
assertGreaterThan(boolValue(true), doubleValue(2.0), doubleValue(1.0));
}
public void test_greaterThan_knownDouble_knownInt_false() throws EvaluationException {
assertGreaterThan(boolValue(false), doubleValue(1.0), intValue(2));
}
public void test_greaterThan_knownDouble_knownInt_true() throws EvaluationException {
assertGreaterThan(boolValue(true), doubleValue(2.0), intValue(1));
}
public void test_greaterThan_knownDouble_unknownDouble() throws EvaluationException {
assertGreaterThan(boolValue(null), doubleValue(1.0), doubleValue(null));
}
public void test_greaterThan_knownDouble_unknownInt() throws EvaluationException {
assertGreaterThan(boolValue(null), doubleValue(1.0), intValue(null));
}
public void test_greaterThan_knownInt_knownInt_false() throws EvaluationException {
assertGreaterThan(boolValue(false), intValue(1), intValue(2));
}
public void test_greaterThan_knownInt_knownInt_true() throws EvaluationException {
assertGreaterThan(boolValue(true), intValue(2), intValue(1));
}
public void test_greaterThan_knownInt_knownString() throws EvaluationException {
assertGreaterThan(null, intValue(1), stringValue("2"));
}
public void test_greaterThan_knownInt_unknownDouble() throws EvaluationException {
assertGreaterThan(boolValue(null), intValue(1), doubleValue(null));
}
public void test_greaterThan_knownInt_unknownInt() throws EvaluationException {
assertGreaterThan(boolValue(null), intValue(1), intValue(null));
}
public void test_greaterThan_knownString_knownInt() throws EvaluationException {
assertGreaterThan(null, stringValue("1"), intValue(2));
}
public void test_greaterThan_unknownDouble_knownDouble() throws EvaluationException {
assertGreaterThan(boolValue(null), doubleValue(null), doubleValue(2.0));
}
public void test_greaterThan_unknownDouble_knownInt() throws EvaluationException {
assertGreaterThan(boolValue(null), doubleValue(null), intValue(2));
}
public void test_greaterThan_unknownInt_knownDouble() throws EvaluationException {
assertGreaterThan(boolValue(null), intValue(null), doubleValue(2.0));
}
public void test_greaterThan_unknownInt_knownInt() throws EvaluationException {
assertGreaterThan(boolValue(null), intValue(null), intValue(2));
}
public void test_greaterThanOrEqual_knownDouble_knownDouble_false() throws EvaluationException {
assertGreaterThanOrEqual(boolValue(false), doubleValue(1.0), doubleValue(2.0));
}
public void test_greaterThanOrEqual_knownDouble_knownDouble_true() throws EvaluationException {
assertGreaterThanOrEqual(boolValue(true), doubleValue(2.0), doubleValue(1.0));
}
public void test_greaterThanOrEqual_knownDouble_knownInt_false() throws EvaluationException {
assertGreaterThanOrEqual(boolValue(false), doubleValue(1.0), intValue(2));
}
public void test_greaterThanOrEqual_knownDouble_knownInt_true() throws EvaluationException {
assertGreaterThanOrEqual(boolValue(true), doubleValue(2.0), intValue(1));
}
public void test_greaterThanOrEqual_knownDouble_unknownDouble() throws EvaluationException {
assertGreaterThanOrEqual(boolValue(null), doubleValue(1.0), doubleValue(null));
}
public void test_greaterThanOrEqual_knownDouble_unknownInt() throws EvaluationException {
assertGreaterThanOrEqual(boolValue(null), doubleValue(1.0), intValue(null));
}
public void test_greaterThanOrEqual_knownInt_knownInt_false() throws EvaluationException {
assertGreaterThanOrEqual(boolValue(false), intValue(1), intValue(2));
}
public void test_greaterThanOrEqual_knownInt_knownInt_true() throws EvaluationException {
assertGreaterThanOrEqual(boolValue(true), intValue(2), intValue(2));
}
public void test_greaterThanOrEqual_knownInt_knownString() throws EvaluationException {
assertGreaterThanOrEqual(null, intValue(1), stringValue("2"));
}
public void test_greaterThanOrEqual_knownInt_unknownDouble() throws EvaluationException {
assertGreaterThanOrEqual(boolValue(null), intValue(1), doubleValue(null));
}
public void test_greaterThanOrEqual_knownInt_unknownInt() throws EvaluationException {
assertGreaterThanOrEqual(boolValue(null), intValue(1), intValue(null));
}
public void test_greaterThanOrEqual_knownString_knownInt() throws EvaluationException {
assertGreaterThanOrEqual(null, stringValue("1"), intValue(2));
}
public void test_greaterThanOrEqual_unknownDouble_knownDouble() throws EvaluationException {
assertGreaterThanOrEqual(boolValue(null), doubleValue(null), doubleValue(2.0));
}
public void test_greaterThanOrEqual_unknownDouble_knownInt() throws EvaluationException {
assertGreaterThanOrEqual(boolValue(null), doubleValue(null), intValue(2));
}
public void test_greaterThanOrEqual_unknownInt_knownDouble() throws EvaluationException {
assertGreaterThanOrEqual(boolValue(null), intValue(null), doubleValue(2.0));
}
public void test_greaterThanOrEqual_unknownInt_knownInt() throws EvaluationException {
assertGreaterThanOrEqual(boolValue(null), intValue(null), intValue(2));
}
public void test_hasExactValue_bool_false() {
assertTrue(boolValue(false).hasExactValue());
}
public void test_hasExactValue_bool_true() {
assertTrue(boolValue(true).hasExactValue());
}
public void test_hasExactValue_bool_unknown() {
assertTrue(boolValue(null).hasExactValue());
}
public void test_hasExactValue_double_known() {
assertTrue(doubleValue(2.3).hasExactValue());
}
public void test_hasExactValue_double_unknown() {
assertTrue(doubleValue(null).hasExactValue());
}
public void test_hasExactValue_dynamic() {
assertFalse(dynamicValue().hasExactValue());
}
public void test_hasExactValue_int_known() {
assertTrue(intValue(23).hasExactValue());
}
public void test_hasExactValue_int_unknown() {
assertTrue(intValue(null).hasExactValue());
}
public void test_hasExactValue_list_empty() {
assertTrue(listValue().hasExactValue());
}
public void test_hasExactValue_list_invalid() {
assertFalse(dynamicValue().hasExactValue());
}
public void test_hasExactValue_list_valid() {
assertTrue(listValue(intValue(23)).hasExactValue());
}
public void test_hasExactValue_map_empty() {
assertTrue(mapValue().hasExactValue());
}
public void test_hasExactValue_map_invalidKey() {
assertFalse(mapValue(dynamicValue(), stringValue("value")).hasExactValue());
}
public void test_hasExactValue_map_invalidValue() {
assertFalse(mapValue(stringValue("key"), dynamicValue()).hasExactValue());
}
public void test_hasExactValue_map_valid() {
assertTrue(mapValue(stringValue("key"), stringValue("value")).hasExactValue());
}
public void test_hasExactValue_null() {
assertTrue(nullValue().hasExactValue());
}
public void test_hasExactValue_num() {
assertFalse(numValue().hasExactValue());
}
public void test_hasExactValue_string_known() {
assertTrue(stringValue("twenty-three").hasExactValue());
}
public void test_hasExactValue_string_unknown() {
assertTrue(stringValue(null).hasExactValue());
}
public void test_integerDivide_knownDouble_knownDouble() throws EvaluationException {
assertIntegerDivide(intValue(3), doubleValue(6.0), doubleValue(2.0));
}
public void test_integerDivide_knownDouble_knownInt() throws EvaluationException {
assertIntegerDivide(intValue(3), doubleValue(6.0), intValue(2));
}
public void test_integerDivide_knownDouble_unknownDouble() throws EvaluationException {
assertIntegerDivide(intValue(null), doubleValue(6.0), doubleValue(null));
}
public void test_integerDivide_knownDouble_unknownInt() throws EvaluationException {
assertIntegerDivide(intValue(null), doubleValue(6.0), intValue(null));
}
public void test_integerDivide_knownInt_knownInt() throws EvaluationException {
assertIntegerDivide(intValue(3), intValue(6), intValue(2));
}
public void test_integerDivide_knownInt_knownString() throws EvaluationException {
assertIntegerDivide(null, intValue(6), stringValue("2"));
}
public void test_integerDivide_knownInt_unknownDouble() throws EvaluationException {
assertIntegerDivide(intValue(null), intValue(6), doubleValue(null));
}
public void test_integerDivide_knownInt_unknownInt() throws EvaluationException {
assertIntegerDivide(intValue(null), intValue(6), intValue(null));
}
public void test_integerDivide_knownString_knownInt() throws EvaluationException {
assertIntegerDivide(null, stringValue("6"), intValue(2));
}
public void test_integerDivide_unknownDouble_knownDouble() throws EvaluationException {
assertIntegerDivide(intValue(null), doubleValue(null), doubleValue(2.0));
}
public void test_integerDivide_unknownDouble_knownInt() throws EvaluationException {
assertIntegerDivide(intValue(null), doubleValue(null), intValue(2));
}
public void test_integerDivide_unknownInt_knownDouble() throws EvaluationException {
assertIntegerDivide(intValue(null), intValue(null), doubleValue(2.0));
}
public void test_integerDivide_unknownInt_knownInt() throws EvaluationException {
assertIntegerDivide(intValue(null), intValue(null), intValue(2));
}
public void test_isBoolNumStringOrNull_bool_false() {
assertTrue(boolValue(false).isBoolNumStringOrNull());
}
public void test_isBoolNumStringOrNull_bool_true() {
assertTrue(boolValue(true).isBoolNumStringOrNull());
}
public void test_isBoolNumStringOrNull_bool_unknown() {
assertTrue(boolValue(null).isBoolNumStringOrNull());
}
public void test_isBoolNumStringOrNull_double_known() {
assertTrue(doubleValue(2.3).isBoolNumStringOrNull());
}
public void test_isBoolNumStringOrNull_double_unknown() {
assertTrue(doubleValue(null).isBoolNumStringOrNull());
}
public void test_isBoolNumStringOrNull_dynamic() {
assertTrue(dynamicValue().isBoolNumStringOrNull());
}
public void test_isBoolNumStringOrNull_int_known() {
assertTrue(intValue(23).isBoolNumStringOrNull());
}
public void test_isBoolNumStringOrNull_int_unknown() {
assertTrue(intValue(null).isBoolNumStringOrNull());
}
public void test_isBoolNumStringOrNull_list() {
assertFalse(listValue().isBoolNumStringOrNull());
}
public void test_isBoolNumStringOrNull_null() {
assertTrue(nullValue().isBoolNumStringOrNull());
}
public void test_isBoolNumStringOrNull_num() {
assertTrue(numValue().isBoolNumStringOrNull());
}
public void test_isBoolNumStringOrNull_string_known() {
assertTrue(stringValue("twenty-three").isBoolNumStringOrNull());
}
public void test_isBoolNumStringOrNull_string_unknown() {
assertTrue(stringValue(null).isBoolNumStringOrNull());
}
public void test_lessThan_knownDouble_knownDouble_false() throws EvaluationException {
assertLessThan(boolValue(false), doubleValue(2.0), doubleValue(1.0));
}
public void test_lessThan_knownDouble_knownDouble_true() throws EvaluationException {
assertLessThan(boolValue(true), doubleValue(1.0), doubleValue(2.0));
}
public void test_lessThan_knownDouble_knownInt_false() throws EvaluationException {
assertLessThan(boolValue(false), doubleValue(2.0), intValue(1));
}
public void test_lessThan_knownDouble_knownInt_true() throws EvaluationException {
assertLessThan(boolValue(true), doubleValue(1.0), intValue(2));
}
public void test_lessThan_knownDouble_unknownDouble() throws EvaluationException {
assertLessThan(boolValue(null), doubleValue(1.0), doubleValue(null));
}
public void test_lessThan_knownDouble_unknownInt() throws EvaluationException {
assertLessThan(boolValue(null), doubleValue(1.0), intValue(null));
}
public void test_lessThan_knownInt_knownInt_false() throws EvaluationException {
assertLessThan(boolValue(false), intValue(2), intValue(1));
}
public void test_lessThan_knownInt_knownInt_true() throws EvaluationException {
assertLessThan(boolValue(true), intValue(1), intValue(2));
}
public void test_lessThan_knownInt_knownString() throws EvaluationException {
assertLessThan(null, intValue(1), stringValue("2"));
}
public void test_lessThan_knownInt_unknownDouble() throws EvaluationException {
assertLessThan(boolValue(null), intValue(1), doubleValue(null));
}
public void test_lessThan_knownInt_unknownInt() throws EvaluationException {
assertLessThan(boolValue(null), intValue(1), intValue(null));
}
public void test_lessThan_knownString_knownInt() throws EvaluationException {
assertLessThan(null, stringValue("1"), intValue(2));
}
public void test_lessThan_unknownDouble_knownDouble() throws EvaluationException {
assertLessThan(boolValue(null), doubleValue(null), doubleValue(2.0));
}
public void test_lessThan_unknownDouble_knownInt() throws EvaluationException {
assertLessThan(boolValue(null), doubleValue(null), intValue(2));
}
public void test_lessThan_unknownInt_knownDouble() throws EvaluationException {
assertLessThan(boolValue(null), intValue(null), doubleValue(2.0));
}
public void test_lessThan_unknownInt_knownInt() throws EvaluationException {
assertLessThan(boolValue(null), intValue(null), intValue(2));
}
public void test_lessThanOrEqual_knownDouble_knownDouble_false() throws EvaluationException {
assertLessThanOrEqual(boolValue(false), doubleValue(2.0), doubleValue(1.0));
}
public void test_lessThanOrEqual_knownDouble_knownDouble_true() throws EvaluationException {
assertLessThanOrEqual(boolValue(true), doubleValue(1.0), doubleValue(2.0));
}
public void test_lessThanOrEqual_knownDouble_knownInt_false() throws EvaluationException {
assertLessThanOrEqual(boolValue(false), doubleValue(2.0), intValue(1));
}
public void test_lessThanOrEqual_knownDouble_knownInt_true() throws EvaluationException {
assertLessThanOrEqual(boolValue(true), doubleValue(1.0), intValue(2));
}
public void test_lessThanOrEqual_knownDouble_unknownDouble() throws EvaluationException {
assertLessThanOrEqual(boolValue(null), doubleValue(1.0), doubleValue(null));
}
public void test_lessThanOrEqual_knownDouble_unknownInt() throws EvaluationException {
assertLessThanOrEqual(boolValue(null), doubleValue(1.0), intValue(null));
}
public void test_lessThanOrEqual_knownInt_knownInt_false() throws EvaluationException {
assertLessThanOrEqual(boolValue(false), intValue(2), intValue(1));
}
public void test_lessThanOrEqual_knownInt_knownInt_true() throws EvaluationException {
assertLessThanOrEqual(boolValue(true), intValue(1), intValue(2));
}
public void test_lessThanOrEqual_knownInt_knownString() throws EvaluationException {
assertLessThanOrEqual(null, intValue(1), stringValue("2"));
}
public void test_lessThanOrEqual_knownInt_unknownDouble() throws EvaluationException {
assertLessThanOrEqual(boolValue(null), intValue(1), doubleValue(null));
}
public void test_lessThanOrEqual_knownInt_unknownInt() throws EvaluationException {
assertLessThanOrEqual(boolValue(null), intValue(1), intValue(null));
}
public void test_lessThanOrEqual_knownString_knownInt() throws EvaluationException {
assertLessThanOrEqual(null, stringValue("1"), intValue(2));
}
public void test_lessThanOrEqual_unknownDouble_knownDouble() throws EvaluationException {
assertLessThanOrEqual(boolValue(null), doubleValue(null), doubleValue(2.0));
}
public void test_lessThanOrEqual_unknownDouble_knownInt() throws EvaluationException {
assertLessThanOrEqual(boolValue(null), doubleValue(null), intValue(2));
}
public void test_lessThanOrEqual_unknownInt_knownDouble() throws EvaluationException {
assertLessThanOrEqual(boolValue(null), intValue(null), doubleValue(2.0));
}
public void test_lessThanOrEqual_unknownInt_knownInt() throws EvaluationException {
assertLessThanOrEqual(boolValue(null), intValue(null), intValue(2));
}
public void test_logicalAnd_false_false() throws EvaluationException {
assertLogicalAnd(boolValue(false), boolValue(false), boolValue(false));
}
public void test_logicalAnd_false_null() throws EvaluationException {
try {
assertLogicalAnd(boolValue(false), boolValue(false), nullValue());
fail("Expected EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
}
public void test_logicalAnd_false_string() throws EvaluationException {
try {
assertLogicalAnd(boolValue(false), boolValue(false), stringValue("false"));
fail("Expected EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
}
public void test_logicalAnd_false_true() throws EvaluationException {
assertLogicalAnd(boolValue(false), boolValue(false), boolValue(true));
}
public void test_logicalAnd_null_false() throws EvaluationException {
try {
assertLogicalAnd(boolValue(false), nullValue(), boolValue(false));
fail("Expected EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
}
public void test_logicalAnd_null_true() throws EvaluationException {
try {
assertLogicalAnd(boolValue(false), nullValue(), boolValue(true));
fail("Expected EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
}
public void test_logicalAnd_string_false() throws EvaluationException {
try {
assertLogicalAnd(boolValue(false), stringValue("true"), boolValue(false));
fail("Expected EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
}
public void test_logicalAnd_string_true() throws EvaluationException {
try {
assertLogicalAnd(boolValue(false), stringValue("false"), boolValue(true));
fail("Expected EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
}
public void test_logicalAnd_true_false() throws EvaluationException {
assertLogicalAnd(boolValue(false), boolValue(true), boolValue(false));
}
public void test_logicalAnd_true_null() throws EvaluationException {
assertLogicalAnd(null, boolValue(true), nullValue());
}
public void test_logicalAnd_true_string() throws EvaluationException {
try {
assertLogicalAnd(boolValue(false), boolValue(true), stringValue("true"));
fail("Expected EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
}
public void test_logicalAnd_true_true() throws EvaluationException {
assertLogicalAnd(boolValue(true), boolValue(true), boolValue(true));
}
public void test_logicalNot_false() throws EvaluationException {
assertLogicalNot(boolValue(true), boolValue(false));
}
public void test_logicalNot_null() throws EvaluationException {
assertLogicalNot(null, nullValue());
}
public void test_logicalNot_string() throws EvaluationException {
try {
assertLogicalNot(boolValue(true), stringValue(null));
fail("Expected EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
}
public void test_logicalNot_true() throws EvaluationException {
assertLogicalNot(boolValue(false), boolValue(true));
}
public void test_logicalNot_unknown() throws EvaluationException {
assertLogicalNot(boolValue(null), boolValue(null));
}
public void test_logicalOr_false_false() throws EvaluationException {
assertLogicalOr(boolValue(false), boolValue(false), boolValue(false));
}
public void test_logicalOr_false_null() throws EvaluationException {
assertLogicalOr(null, boolValue(false), nullValue());
}
public void test_logicalOr_false_string() throws EvaluationException {
try {
assertLogicalOr(boolValue(false), boolValue(false), stringValue("false"));
fail("Expected EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
}
public void test_logicalOr_false_true() throws EvaluationException {
assertLogicalOr(boolValue(true), boolValue(false), boolValue(true));
}
public void test_logicalOr_null_false() throws EvaluationException {
try {
assertLogicalOr(boolValue(false), nullValue(), boolValue(false));
fail("Expected EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
}
public void test_logicalOr_null_true() throws EvaluationException {
try {
assertLogicalOr(boolValue(true), nullValue(), boolValue(true));
fail("Expected EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
}
public void test_logicalOr_string_false() throws EvaluationException {
try {
assertLogicalOr(boolValue(false), stringValue("true"), boolValue(false));
fail("Expected EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
}
public void test_logicalOr_string_true() throws EvaluationException {
try {
assertLogicalOr(boolValue(true), stringValue("false"), boolValue(true));
fail("Expected EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
}
public void test_logicalOr_true_false() throws EvaluationException {
assertLogicalOr(boolValue(true), boolValue(true), boolValue(false));
}
public void test_logicalOr_true_null() throws EvaluationException {
try {
assertLogicalOr(boolValue(true), boolValue(true), nullValue());
fail("Expected EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
}
public void test_logicalOr_true_string() throws EvaluationException {
try {
assertLogicalOr(boolValue(true), boolValue(true), stringValue("true"));
fail("Expected EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
}
public void test_logicalOr_true_true() throws EvaluationException {
assertLogicalOr(boolValue(true), boolValue(true), boolValue(true));
}
public void test_minus_knownDouble_knownDouble() throws EvaluationException {
assertMinus(doubleValue(1.0), doubleValue(4.0), doubleValue(3.0));
}
public void test_minus_knownDouble_knownInt() throws EvaluationException {
assertMinus(doubleValue(1.0), doubleValue(4.0), intValue(3));
}
public void test_minus_knownDouble_unknownDouble() throws EvaluationException {
assertMinus(doubleValue(null), doubleValue(4.0), doubleValue(null));
}
public void test_minus_knownDouble_unknownInt() throws EvaluationException {
assertMinus(doubleValue(null), doubleValue(4.0), intValue(null));
}
public void test_minus_knownInt_knownInt() throws EvaluationException {
assertMinus(intValue(1), intValue(4), intValue(3));
}
public void test_minus_knownInt_knownString() throws EvaluationException {
assertMinus(null, intValue(4), stringValue("3"));
}
public void test_minus_knownInt_unknownDouble() throws EvaluationException {
assertMinus(doubleValue(null), intValue(4), doubleValue(null));
}
public void test_minus_knownInt_unknownInt() throws EvaluationException {
assertMinus(intValue(null), intValue(4), intValue(null));
}
public void test_minus_knownString_knownInt() throws EvaluationException {
assertMinus(null, stringValue("4"), intValue(3));
}
public void test_minus_unknownDouble_knownDouble() throws EvaluationException {
assertMinus(doubleValue(null), doubleValue(null), doubleValue(3.0));
}
public void test_minus_unknownDouble_knownInt() throws EvaluationException {
assertMinus(doubleValue(null), doubleValue(null), intValue(3));
}
public void test_minus_unknownInt_knownDouble() throws EvaluationException {
assertMinus(doubleValue(null), intValue(null), doubleValue(3.0));
}
public void test_minus_unknownInt_knownInt() throws EvaluationException {
assertMinus(intValue(null), intValue(null), intValue(3));
}
public void test_negated_double_known() throws EvaluationException {
assertNegated(doubleValue(2.0), doubleValue(-2.0));
}
public void test_negated_double_unknown() throws EvaluationException {
assertNegated(doubleValue(null), doubleValue(null));
}
public void test_negated_int_known() throws EvaluationException {
assertNegated(intValue(-3), intValue(3));
}
public void test_negated_int_unknown() throws EvaluationException {
assertNegated(intValue(null), intValue(null));
}
public void test_negated_string() throws EvaluationException {
assertNegated(null, stringValue(null));
}
public void test_notEqual_bool_false() throws EvaluationException {
assertNotEqual(boolValue(false), boolValue(true), boolValue(true));
}
public void test_notEqual_bool_true() throws EvaluationException {
assertNotEqual(boolValue(true), boolValue(false), boolValue(true));
}
public void test_notEqual_bool_unknown() throws EvaluationException {
assertNotEqual(boolValue(null), boolValue(null), boolValue(false));
}
public void test_notEqual_double_false() throws EvaluationException {
assertNotEqual(boolValue(false), doubleValue(2.0), doubleValue(2.0));
}
public void test_notEqual_double_true() throws EvaluationException {
assertNotEqual(boolValue(true), doubleValue(2.0), doubleValue(4.0));
}
public void test_notEqual_double_unknown() throws EvaluationException {
assertNotEqual(boolValue(null), doubleValue(1.0), doubleValue(null));
}
public void test_notEqual_int_false() throws EvaluationException {
assertNotEqual(boolValue(false), intValue(5), intValue(5));
}
public void test_notEqual_int_true() throws EvaluationException {
assertNotEqual(boolValue(true), intValue(-5), intValue(5));
}
public void test_notEqual_int_unknown() throws EvaluationException {
assertNotEqual(boolValue(null), intValue(null), intValue(3));
}
public void test_notEqual_null() throws EvaluationException {
assertNotEqual(boolValue(false), nullValue(), nullValue());
}
public void test_notEqual_string_false() throws EvaluationException {
assertNotEqual(boolValue(false), stringValue("abc"), stringValue("abc"));
}
public void test_notEqual_string_true() throws EvaluationException {
assertNotEqual(boolValue(true), stringValue("abc"), stringValue("def"));
}
public void test_notEqual_string_unknown() throws EvaluationException {
assertNotEqual(boolValue(null), stringValue(null), stringValue("def"));
}
public void test_performToString_bool_false() throws EvaluationException {
assertPerformToString(stringValue("false"), boolValue(false));
}
public void test_performToString_bool_true() throws EvaluationException {
assertPerformToString(stringValue("true"), boolValue(true));
}
public void test_performToString_bool_unknown() throws EvaluationException {
assertPerformToString(stringValue(null), boolValue(null));
}
public void test_performToString_double_known() throws EvaluationException {
assertPerformToString(stringValue("2.0"), doubleValue(2.0));
}
public void test_performToString_double_unknown() throws EvaluationException {
assertPerformToString(stringValue(null), doubleValue(null));
}
public void test_performToString_int_known() throws EvaluationException {
assertPerformToString(stringValue("5"), intValue(5));
}
public void test_performToString_int_unknown() throws EvaluationException {
assertPerformToString(stringValue(null), intValue(null));
}
public void test_performToString_null() throws EvaluationException {
assertPerformToString(stringValue("null"), nullValue());
}
public void test_performToString_string_known() throws EvaluationException {
assertPerformToString(stringValue("abc"), stringValue("abc"));
}
public void test_performToString_string_unknown() throws EvaluationException {
assertPerformToString(stringValue(null), stringValue(null));
}
public void test_remainder_knownDouble_knownDouble() throws EvaluationException {
assertRemainder(doubleValue(1.0), doubleValue(7.0), doubleValue(2.0));
}
public void test_remainder_knownDouble_knownInt() throws EvaluationException {
assertRemainder(doubleValue(1.0), doubleValue(7.0), intValue(2));
}
public void test_remainder_knownDouble_unknownDouble() throws EvaluationException {
assertRemainder(doubleValue(null), doubleValue(7.0), doubleValue(null));
}
public void test_remainder_knownDouble_unknownInt() throws EvaluationException {
assertRemainder(doubleValue(null), doubleValue(6.0), intValue(null));
}
public void test_remainder_knownInt_knownInt() throws EvaluationException {
assertRemainder(intValue(1), intValue(7), intValue(2));
}
public void test_remainder_knownInt_knownString() throws EvaluationException {
assertRemainder(null, intValue(7), stringValue("2"));
}
public void test_remainder_knownInt_unknownDouble() throws EvaluationException {
assertRemainder(doubleValue(null), intValue(7), doubleValue(null));
}
public void test_remainder_knownInt_unknownInt() throws EvaluationException {
assertRemainder(intValue(null), intValue(7), intValue(null));
}
public void test_remainder_knownString_knownInt() throws EvaluationException {
assertRemainder(null, stringValue("7"), intValue(2));
}
public void test_remainder_unknownDouble_knownDouble() throws EvaluationException {
assertRemainder(doubleValue(null), doubleValue(null), doubleValue(2.0));
}
public void test_remainder_unknownDouble_knownInt() throws EvaluationException {
assertRemainder(doubleValue(null), doubleValue(null), intValue(2));
}
public void test_remainder_unknownInt_knownDouble() throws EvaluationException {
assertRemainder(doubleValue(null), intValue(null), doubleValue(2.0));
}
public void test_remainder_unknownInt_knownInt() throws EvaluationException {
assertRemainder(intValue(null), intValue(null), intValue(2));
}
public void test_shiftLeft_knownInt_knownInt() throws EvaluationException {
assertShiftLeft(intValue(48), intValue(6), intValue(3));
}
public void test_shiftLeft_knownInt_knownString() throws EvaluationException {
assertShiftLeft(null, intValue(6), stringValue(null));
}
public void test_shiftLeft_knownInt_tooLarge() throws EvaluationException {
assertShiftLeft(intValue(null), intValue(6), new DartObjectImpl(
typeProvider.getIntType(),
new IntState(BigInteger.valueOf(Long.MAX_VALUE))));
}
public void test_shiftLeft_knownInt_unknownInt() throws EvaluationException {
assertShiftLeft(intValue(null), intValue(6), intValue(null));
}
public void test_shiftLeft_knownString_knownInt() throws EvaluationException {
assertShiftLeft(null, stringValue(null), intValue(3));
}
public void test_shiftLeft_unknownInt_knownInt() throws EvaluationException {
assertShiftLeft(intValue(null), intValue(null), intValue(3));
}
public void test_shiftLeft_unknownInt_unknownInt() throws EvaluationException {
assertShiftLeft(intValue(null), intValue(null), intValue(null));
}
public void test_shiftRight_knownInt_knownInt() throws EvaluationException {
assertShiftRight(intValue(6), intValue(48), intValue(3));
}
public void test_shiftRight_knownInt_knownString() throws EvaluationException {
assertShiftRight(null, intValue(48), stringValue(null));
}
public void test_shiftRight_knownInt_tooLarge() throws EvaluationException {
assertShiftRight(intValue(null), intValue(48), new DartObjectImpl(
typeProvider.getIntType(),
new IntState(BigInteger.valueOf(Long.MAX_VALUE))));
}
public void test_shiftRight_knownInt_unknownInt() throws EvaluationException {
assertShiftRight(intValue(null), intValue(48), intValue(null));
}
public void test_shiftRight_knownString_knownInt() throws EvaluationException {
assertShiftRight(null, stringValue(null), intValue(3));
}
public void test_shiftRight_unknownInt_knownInt() throws EvaluationException {
assertShiftRight(intValue(null), intValue(null), intValue(3));
}
public void test_shiftRight_unknownInt_unknownInt() throws EvaluationException {
assertShiftRight(intValue(null), intValue(null), intValue(null));
}
public void test_stringLength_int() throws EvaluationException {
try {
assertStringLength(intValue(null), intValue(0));
fail("Expected EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
}
public void test_stringLength_knownString() throws EvaluationException {
assertStringLength(intValue(3), stringValue("abc"));
}
public void test_stringLength_unknownString() throws EvaluationException {
assertStringLength(intValue(null), stringValue(null));
}
public void test_times_knownDouble_knownDouble() throws EvaluationException {
assertTimes(doubleValue(6.0), doubleValue(2.0), doubleValue(3.0));
}
public void test_times_knownDouble_knownInt() throws EvaluationException {
assertTimes(doubleValue(6.0), doubleValue(2.0), intValue(3));
}
public void test_times_knownDouble_unknownDouble() throws EvaluationException {
assertTimes(doubleValue(null), doubleValue(2.0), doubleValue(null));
}
public void test_times_knownDouble_unknownInt() throws EvaluationException {
assertTimes(doubleValue(null), doubleValue(2.0), intValue(null));
}
public void test_times_knownInt_knownInt() throws EvaluationException {
assertTimes(intValue(6), intValue(2), intValue(3));
}
public void test_times_knownInt_knownString() throws EvaluationException {
assertTimes(null, intValue(2), stringValue("3"));
}
public void test_times_knownInt_unknownDouble() throws EvaluationException {
assertTimes(doubleValue(null), intValue(2), doubleValue(null));
}
public void test_times_knownInt_unknownInt() throws EvaluationException {
assertTimes(intValue(null), intValue(2), intValue(null));
}
public void test_times_knownString_knownInt() throws EvaluationException {
assertTimes(null, stringValue("2"), intValue(3));
}
public void test_times_unknownDouble_knownDouble() throws EvaluationException {
assertTimes(doubleValue(null), doubleValue(null), doubleValue(3.0));
}
public void test_times_unknownDouble_knownInt() throws EvaluationException {
assertTimes(doubleValue(null), doubleValue(null), intValue(3));
}
public void test_times_unknownInt_knownDouble() throws EvaluationException {
assertTimes(doubleValue(null), intValue(null), doubleValue(3.0));
}
public void test_times_unknownInt_knownInt() throws EvaluationException {
assertTimes(intValue(null), intValue(null), intValue(3));
}
/**
* Assert that the result of adding the left and right operands is the expected value, or that the
* operation throws an exception if the expected value is {@code null}.
*
* @param expected the expected result of the operation
* @param leftOperand the left operand to the operation
* @param rightOperand the left operand to the operation
* @throws EvaluationException if the result is an exception when it should not be
*/
private void assertAdd(DartObjectImpl expected, DartObjectImpl leftOperand,
DartObjectImpl rightOperand) throws EvaluationException {
if (expected == null) {
try {
leftOperand.add(typeProvider, rightOperand);
fail("Expected an EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
} else {
DartObjectImpl result = leftOperand.add(typeProvider, rightOperand);
assertNotNull(result);
assertEquals(expected, result);
}
}
/**
* Assert that the result of bit-anding the left and right operands is the expected value, or that
* the operation throws an exception if the expected value is {@code null}.
*
* @param expected the expected result of the operation
* @param leftOperand the left operand to the operation
* @param rightOperand the left operand to the operation
* @throws EvaluationException if the result is an exception when it should not be
*/
private void assertBitAnd(DartObjectImpl expected, DartObjectImpl leftOperand,
DartObjectImpl rightOperand) throws EvaluationException {
if (expected == null) {
try {
leftOperand.bitAnd(typeProvider, rightOperand);
fail("Expected an EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
} else {
DartObjectImpl result = leftOperand.bitAnd(typeProvider, rightOperand);
assertNotNull(result);
assertEquals(expected, result);
}
}
/**
* Assert that the bit-not of the operand is the expected value, or that the operation throws an
* exception if the expected value is {@code null}.
*
* @param expected the expected result of the operation
* @param operand the operand to the operation
* @throws EvaluationException if the result is an exception when it should not be
*/
private void assertBitNot(DartObjectImpl expected, DartObjectImpl operand)
throws EvaluationException {
if (expected == null) {
try {
operand.bitNot(typeProvider);
fail("Expected an EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
} else {
DartObjectImpl result = operand.bitNot(typeProvider);
assertNotNull(result);
assertEquals(expected, result);
}
}
/**
* Assert that the result of bit-oring the left and right operands is the expected value, or that
* the operation throws an exception if the expected value is {@code null}.
*
* @param expected the expected result of the operation
* @param leftOperand the left operand to the operation
* @param rightOperand the left operand to the operation
* @throws EvaluationException if the result is an exception when it should not be
*/
private void assertBitOr(DartObjectImpl expected, DartObjectImpl leftOperand,
DartObjectImpl rightOperand) throws EvaluationException {
if (expected == null) {
try {
leftOperand.bitOr(typeProvider, rightOperand);
fail("Expected an EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
} else {
DartObjectImpl result = leftOperand.bitOr(typeProvider, rightOperand);
assertNotNull(result);
assertEquals(expected, result);
}
}
/**
* Assert that the result of bit-xoring the left and right operands is the expected value, or that
* the operation throws an exception if the expected value is {@code null}.
*
* @param expected the expected result of the operation
* @param leftOperand the left operand to the operation
* @param rightOperand the left operand to the operation
* @throws EvaluationException if the result is an exception when it should not be
*/
private void assertBitXor(DartObjectImpl expected, DartObjectImpl leftOperand,
DartObjectImpl rightOperand) throws EvaluationException {
if (expected == null) {
try {
leftOperand.bitXor(typeProvider, rightOperand);
fail("Expected an EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
} else {
DartObjectImpl result = leftOperand.bitXor(typeProvider, rightOperand);
assertNotNull(result);
assertEquals(expected, result);
}
}
/**
* Assert that the result of concatenating the left and right operands is the expected value, or
* that the operation throws an exception if the expected value is {@code null}.
*
* @param expected the expected result of the operation
* @param leftOperand the left operand to the operation
* @param rightOperand the left operand to the operation
* @throws EvaluationException if the result is an exception when it should not be
*/
private void assertConcatenate(DartObjectImpl expected, DartObjectImpl leftOperand,
DartObjectImpl rightOperand) throws EvaluationException {
if (expected == null) {
try {
leftOperand.concatenate(typeProvider, rightOperand);
fail("Expected an EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
} else {
DartObjectImpl result = leftOperand.concatenate(typeProvider, rightOperand);
assertNotNull(result);
assertEquals(expected, result);
}
}
/**
* Assert that the result of dividing the left and right operands is the expected value, or that
* the operation throws an exception if the expected value is {@code null}.
*
* @param expected the expected result of the operation
* @param leftOperand the left operand to the operation
* @param rightOperand the left operand to the operation
* @throws EvaluationException if the result is an exception when it should not be
*/
private void assertDivide(DartObjectImpl expected, DartObjectImpl leftOperand,
DartObjectImpl rightOperand) throws EvaluationException {
if (expected == null) {
try {
leftOperand.divide(typeProvider, rightOperand);
fail("Expected an EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
} else {
DartObjectImpl result = leftOperand.divide(typeProvider, rightOperand);
assertNotNull(result);
assertEquals(expected, result);
}
}
/**
* Assert that the result of comparing the left and right operands for equality is the expected
* value, or that the operation throws an exception if the expected value is {@code null}.
*
* @param expected the expected result of the operation
* @param leftOperand the left operand to the operation
* @param rightOperand the left operand to the operation
* @throws EvaluationException if the result is an exception when it should not be
*/
private void assertEqualEqual(DartObjectImpl expected, DartObjectImpl leftOperand,
DartObjectImpl rightOperand) throws EvaluationException {
if (expected == null) {
try {
leftOperand.equalEqual(typeProvider, rightOperand);
fail("Expected an EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
} else {
DartObjectImpl result = leftOperand.equalEqual(typeProvider, rightOperand);
assertNotNull(result);
assertEquals(expected, result);
}
}
/**
* Assert that the result of comparing the left and right operands is the expected value, or that
* the operation throws an exception if the expected value is {@code null}.
*
* @param expected the expected result of the operation
* @param leftOperand the left operand to the operation
* @param rightOperand the left operand to the operation
* @throws EvaluationException if the result is an exception when it should not be
*/
private void assertGreaterThan(DartObjectImpl expected, DartObjectImpl leftOperand,
DartObjectImpl rightOperand) throws EvaluationException {
if (expected == null) {
try {
leftOperand.greaterThan(typeProvider, rightOperand);
fail("Expected an EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
} else {
DartObjectImpl result = leftOperand.greaterThan(typeProvider, rightOperand);
assertNotNull(result);
assertEquals(expected, result);
}
}
/**
* Assert that the result of comparing the left and right operands is the expected value, or that
* the operation throws an exception if the expected value is {@code null}.
*
* @param expected the expected result of the operation
* @param leftOperand the left operand to the operation
* @param rightOperand the left operand to the operation
* @throws EvaluationException if the result is an exception when it should not be
*/
private void assertGreaterThanOrEqual(DartObjectImpl expected, DartObjectImpl leftOperand,
DartObjectImpl rightOperand) throws EvaluationException {
if (expected == null) {
try {
leftOperand.greaterThanOrEqual(typeProvider, rightOperand);
fail("Expected an EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
} else {
DartObjectImpl result = leftOperand.greaterThanOrEqual(typeProvider, rightOperand);
assertNotNull(result);
assertEquals(expected, result);
}
}
@DartBlockBody({"// TODO(scheglov) implement"})
private void assertInstanceOfObjectArray(Object result) {
assertInstanceOf(Object[].class, result);
}
/**
* Assert that the result of dividing the left and right operands as integers is the expected
* value, or that the operation throws an exception if the expected value is {@code null}.
*
* @param expected the expected result of the operation
* @param leftOperand the left operand to the operation
* @param rightOperand the left operand to the operation
* @throws EvaluationException if the result is an exception when it should not be
*/
private void assertIntegerDivide(DartObjectImpl expected, DartObjectImpl leftOperand,
DartObjectImpl rightOperand) throws EvaluationException {
if (expected == null) {
try {
leftOperand.integerDivide(typeProvider, rightOperand);
fail("Expected an EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
} else {
DartObjectImpl result = leftOperand.integerDivide(typeProvider, rightOperand);
assertNotNull(result);
assertEquals(expected, result);
}
}
/**
* Assert that the result of comparing the left and right operands is the expected value, or that
* the operation throws an exception if the expected value is {@code null}.
*
* @param expected the expected result of the operation
* @param leftOperand the left operand to the operation
* @param rightOperand the left operand to the operation
* @throws EvaluationException if the result is an exception when it should not be
*/
private void assertLessThan(DartObjectImpl expected, DartObjectImpl leftOperand,
DartObjectImpl rightOperand) throws EvaluationException {
if (expected == null) {
try {
leftOperand.lessThan(typeProvider, rightOperand);
fail("Expected an EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
} else {
DartObjectImpl result = leftOperand.lessThan(typeProvider, rightOperand);
assertNotNull(result);
assertEquals(expected, result);
}
}
/**
* Assert that the result of comparing the left and right operands is the expected value, or that
* the operation throws an exception if the expected value is {@code null}.
*
* @param expected the expected result of the operation
* @param leftOperand the left operand to the operation
* @param rightOperand the left operand to the operation
* @throws EvaluationException if the result is an exception when it should not be
*/
private void assertLessThanOrEqual(DartObjectImpl expected, DartObjectImpl leftOperand,
DartObjectImpl rightOperand) throws EvaluationException {
if (expected == null) {
try {
leftOperand.lessThanOrEqual(typeProvider, rightOperand);
fail("Expected an EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
} else {
DartObjectImpl result = leftOperand.lessThanOrEqual(typeProvider, rightOperand);
assertNotNull(result);
assertEquals(expected, result);
}
}
/**
* Assert that the result of logical-anding the left and right operands is the expected value, or
* that the operation throws an exception if the expected value is {@code null}.
*
* @param expected the expected result of the operation
* @param leftOperand the left operand to the operation
* @param rightOperand the left operand to the operation
* @throws EvaluationException if the result is an exception when it should not be
*/
private void assertLogicalAnd(DartObjectImpl expected, DartObjectImpl leftOperand,
DartObjectImpl rightOperand) throws EvaluationException {
if (expected == null) {
try {
leftOperand.logicalAnd(typeProvider, rightOperand);
fail("Expected an EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
} else {
DartObjectImpl result = leftOperand.logicalAnd(typeProvider, rightOperand);
assertNotNull(result);
assertEquals(expected, result);
}
}
/**
* Assert that the logical-not of the operand is the expected value, or that the operation throws
* an exception if the expected value is {@code null}.
*
* @param expected the expected result of the operation
* @param operand the operand to the operation
* @throws EvaluationException if the result is an exception when it should not be
*/
private void assertLogicalNot(DartObjectImpl expected, DartObjectImpl operand)
throws EvaluationException {
if (expected == null) {
try {
operand.logicalNot(typeProvider);
fail("Expected an EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
} else {
DartObjectImpl result = operand.logicalNot(typeProvider);
assertNotNull(result);
assertEquals(expected, result);
}
}
/**
* Assert that the result of logical-oring the left and right operands is the expected value, or
* that the operation throws an exception if the expected value is {@code null}.
*
* @param expected the expected result of the operation
* @param leftOperand the left operand to the operation
* @param rightOperand the left operand to the operation
* @throws EvaluationException if the result is an exception when it should not be
*/
private void assertLogicalOr(DartObjectImpl expected, DartObjectImpl leftOperand,
DartObjectImpl rightOperand) throws EvaluationException {
if (expected == null) {
try {
leftOperand.logicalOr(typeProvider, rightOperand);
fail("Expected an EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
} else {
DartObjectImpl result = leftOperand.logicalOr(typeProvider, rightOperand);
assertNotNull(result);
assertEquals(expected, result);
}
}
/**
* Assert that the result of subtracting the left and right operands is the expected value, or
* that the operation throws an exception if the expected value is {@code null}.
*
* @param expected the expected result of the operation
* @param leftOperand the left operand to the operation
* @param rightOperand the left operand to the operation
* @throws EvaluationException if the result is an exception when it should not be
*/
private void assertMinus(DartObjectImpl expected, DartObjectImpl leftOperand,
DartObjectImpl rightOperand) throws EvaluationException {
if (expected == null) {
try {
leftOperand.minus(typeProvider, rightOperand);
fail("Expected an EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
} else {
DartObjectImpl result = leftOperand.minus(typeProvider, rightOperand);
assertNotNull(result);
assertEquals(expected, result);
}
}
/**
* Assert that the negation of the operand is the expected value, or that the operation throws an
* exception if the expected value is {@code null}.
*
* @param expected the expected result of the operation
* @param operand the operand to the operation
* @throws EvaluationException if the result is an exception when it should not be
*/
private void assertNegated(DartObjectImpl expected, DartObjectImpl operand)
throws EvaluationException {
if (expected == null) {
try {
operand.negated(typeProvider);
fail("Expected an EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
} else {
DartObjectImpl result = operand.negated(typeProvider);
assertNotNull(result);
assertEquals(expected, result);
}
}
/**
* Assert that the result of comparing the left and right operands for inequality is the expected
* value, or that the operation throws an exception if the expected value is {@code null}.
*
* @param expected the expected result of the operation
* @param leftOperand the left operand to the operation
* @param rightOperand the left operand to the operation
* @throws EvaluationException if the result is an exception when it should not be
*/
private void assertNotEqual(DartObjectImpl expected, DartObjectImpl leftOperand,
DartObjectImpl rightOperand) throws EvaluationException {
if (expected == null) {
try {
leftOperand.notEqual(typeProvider, rightOperand);
fail("Expected an EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
} else {
DartObjectImpl result = leftOperand.notEqual(typeProvider, rightOperand);
assertNotNull(result);
assertEquals(expected, result);
}
}
/**
* Assert that converting the operand to a string is the expected value, or that the operation
* throws an exception if the expected value is {@code null}.
*
* @param expected the expected result of the operation
* @param operand the operand to the operation
* @throws EvaluationException if the result is an exception when it should not be
*/
private void assertPerformToString(DartObjectImpl expected, DartObjectImpl operand)
throws EvaluationException {
if (expected == null) {
try {
operand.performToString(typeProvider);
fail("Expected an EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
} else {
DartObjectImpl result = operand.performToString(typeProvider);
assertNotNull(result);
assertEquals(expected, result);
}
}
/**
* Assert that the result of taking the remainder of the left and right operands is the expected
* value, or that the operation throws an exception if the expected value is {@code null}.
*
* @param expected the expected result of the operation
* @param leftOperand the left operand to the operation
* @param rightOperand the left operand to the operation
* @throws EvaluationException if the result is an exception when it should not be
*/
private void assertRemainder(DartObjectImpl expected, DartObjectImpl leftOperand,
DartObjectImpl rightOperand) throws EvaluationException {
if (expected == null) {
try {
leftOperand.remainder(typeProvider, rightOperand);
fail("Expected an EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
} else {
DartObjectImpl result = leftOperand.remainder(typeProvider, rightOperand);
assertNotNull(result);
assertEquals(expected, result);
}
}
/**
* Assert that the result of multiplying the left and right operands is the expected value, or
* that the operation throws an exception if the expected value is {@code null}.
*
* @param expected the expected result of the operation
* @param leftOperand the left operand to the operation
* @param rightOperand the left operand to the operation
* @throws EvaluationException if the result is an exception when it should not be
*/
private void assertShiftLeft(DartObjectImpl expected, DartObjectImpl leftOperand,
DartObjectImpl rightOperand) throws EvaluationException {
if (expected == null) {
try {
leftOperand.shiftLeft(typeProvider, rightOperand);
fail("Expected an EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
} else {
DartObjectImpl result = leftOperand.shiftLeft(typeProvider, rightOperand);
assertNotNull(result);
assertEquals(expected, result);
}
}
/**
* Assert that the result of multiplying the left and right operands is the expected value, or
* that the operation throws an exception if the expected value is {@code null}.
*
* @param expected the expected result of the operation
* @param leftOperand the left operand to the operation
* @param rightOperand the left operand to the operation
* @throws EvaluationException if the result is an exception when it should not be
*/
private void assertShiftRight(DartObjectImpl expected, DartObjectImpl leftOperand,
DartObjectImpl rightOperand) throws EvaluationException {
if (expected == null) {
try {
leftOperand.shiftRight(typeProvider, rightOperand);
fail("Expected an EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
} else {
DartObjectImpl result = leftOperand.shiftRight(typeProvider, rightOperand);
assertNotNull(result);
assertEquals(expected, result);
}
}
/**
* Assert that the length of the operand is the expected value, or that the operation throws an
* exception if the expected value is {@code null}.
*
* @param expected the expected result of the operation
* @param operand the operand to the operation
* @throws EvaluationException if the result is an exception when it should not be
*/
private void assertStringLength(DartObjectImpl expected, DartObjectImpl operand)
throws EvaluationException {
if (expected == null) {
try {
operand.stringLength(typeProvider);
fail("Expected an EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
} else {
DartObjectImpl result = operand.stringLength(typeProvider);
assertNotNull(result);
assertEquals(expected, result);
}
}
/**
* Assert that the result of multiplying the left and right operands is the expected value, or
* that the operation throws an exception if the expected value is {@code null}.
*
* @param expected the expected result of the operation
* @param leftOperand the left operand to the operation
* @param rightOperand the left operand to the operation
* @throws EvaluationException if the result is an exception when it should not be
*/
private void assertTimes(DartObjectImpl expected, DartObjectImpl leftOperand,
DartObjectImpl rightOperand) throws EvaluationException {
if (expected == null) {
try {
leftOperand.times(typeProvider, rightOperand);
fail("Expected an EvaluationException");
} catch (EvaluationException exception) {
// Expected
}
} else {
DartObjectImpl result = leftOperand.times(typeProvider, rightOperand);
assertNotNull(result);
assertEquals(expected, result);
}
}
private DartObjectImpl boolValue(Boolean value) {
if (value == null) {
return new DartObjectImpl(typeProvider.getBoolType(), BoolState.UNKNOWN_VALUE);
} else if (value == Boolean.FALSE) {
return new DartObjectImpl(typeProvider.getBoolType(), BoolState.FALSE_STATE);
} else if (value == Boolean.TRUE) {
return new DartObjectImpl(typeProvider.getBoolType(), BoolState.TRUE_STATE);
}
fail("Invalid boolean value used in test");
return null;
}
private DartObjectImpl doubleValue(Double value) {
if (value == null) {
return new DartObjectImpl(typeProvider.getDoubleType(), DoubleState.UNKNOWN_VALUE);
} else {
return new DartObjectImpl(typeProvider.getDoubleType(), new DoubleState(value));
}
}
private DartObjectImpl dynamicValue() {
return new DartObjectImpl(typeProvider.getNullType(), DynamicState.DYNAMIC_STATE);
}
private DartObjectImpl intValue(Integer value) {
if (value == null) {
return new DartObjectImpl(typeProvider.getIntType(), IntState.UNKNOWN_VALUE);
} else {
return new DartObjectImpl(typeProvider.getIntType(), new IntState(
BigInteger.valueOf(value.longValue())));
}
}
private DartObjectImpl listValue(DartObjectImpl... elements) {
return new DartObjectImpl(typeProvider.getListType(), new ListState(elements));
}
private DartObjectImpl mapValue(DartObjectImpl... keyElementPairs) {
HashMap<DartObjectImpl, DartObjectImpl> map = new HashMap<DartObjectImpl, DartObjectImpl>();
int count = keyElementPairs.length;
for (int i = 0; i < count;) {
map.put(keyElementPairs[i++], keyElementPairs[i++]);
}
return new DartObjectImpl(typeProvider.getMapType(), new MapState(map));
}
private DartObjectImpl nullValue() {
return new DartObjectImpl(typeProvider.getNullType(), NullState.NULL_STATE);
}
private DartObjectImpl numValue() {
return new DartObjectImpl(typeProvider.getNullType(), NumState.UNKNOWN_VALUE);
}
private DartObjectImpl stringValue(String value) {
if (value == null) {
return new DartObjectImpl(typeProvider.getStringType(), StringState.UNKNOWN_VALUE);
} else {
return new DartObjectImpl(typeProvider.getStringType(), new StringState(value));
}
}
private DartObjectImpl symbolValue(String value) {
return new DartObjectImpl(typeProvider.getSymbolType(), new SymbolState(value));
}
}