in computer-test/src/main/java/org/apache/hugegraph/computer/core/graph/value/ListValueTest.java [239:312]
public void testAssign() {
ListValue<IntValue> value1 = new ListValue<>(ValueType.INT);
ListValue<FloatValue> value2 = new ListValue<>(ValueType.FLOAT);
value1.add(new IntValue(101));
value1.add(new IntValue(102));
value1.add(new IntValue(103));
value2.add(new FloatValue(201f));
value2.add(new FloatValue(202f));
ListValue<IntValue> value3 = new ListValue<>(ValueType.INT);
ListValue<FloatValue> value4 = new ListValue<>(ValueType.FLOAT);
Assert.assertEquals(ImmutableList.of(), value3.values());
Assert.assertEquals(ImmutableList.of(), value4.values());
Assert.assertNotEquals(value1, value3);
value3.assign(value1);
Assert.assertEquals(value1, value3);
/*
* NOTE: updating value1 lead to value3 to change
* TODO: should keep value1 unmodifiable and let value3 modifiable?
*/
Assert.assertEquals(3, value3.size());
value1.add(new IntValue(104));
Assert.assertEquals(4, value1.size());
Assert.assertEquals(4, value3.size());
Assert.assertNotEquals(value2, value4);
value4.assign(value2);
Assert.assertEquals(value2, value4);
Assert.assertThrows(UnsupportedOperationException.class, () -> {
value4.add(new FloatValue(203f));
});
Assert.assertThrows(IllegalArgumentException.class, () -> {
value3.assign(value2);
}, e -> {
Assert.assertContains("Can't assign list<float> to list<int>",
e.getMessage());
});
Assert.assertThrows(IllegalArgumentException.class, () -> {
value4.assign(value1);
}, e -> {
Assert.assertContains("Can't assign list<int> to list<float>",
e.getMessage());
});
Assert.assertThrows(IllegalArgumentException.class, () -> {
Value v = new IntValue();
value3.assign(v);
}, e -> {
Assert.assertContains("Can't assign '0'(IntValue) to ListValue",
e.getMessage());
});
Assert.assertThrows(IllegalArgumentException.class, () -> {
Value v = new LongValue();
value4.assign(v);
}, e -> {
Assert.assertContains("Can't assign '0'(LongValue) to ListValue",
e.getMessage());
});
Assert.assertThrows(IllegalArgumentException.class, () -> {
value2.assign(null);
}, e -> {
Assert.assertContains("Can't assign null to ListValue",
e.getMessage());
});
}