提交 7dba430b authored 作者: Evgenij Ryazanov's avatar Evgenij Ryazanov

Preserve comporent type in ValueArray.convertPrecision()

上级 1cd15c03
...@@ -225,9 +225,9 @@ public class ValueArray extends Value { ...@@ -225,9 +225,9 @@ public class ValueArray extends Value {
newValues[i] = v; newValues[i] = v;
} }
if (i < length) { if (i < length) {
return get(Arrays.copyOf(newValues, i)); return get(componentType, Arrays.copyOf(newValues, i));
} }
return modified ? get(newValues) : this; return modified ? get(componentType, newValues) : this;
} }
} }
...@@ -332,18 +332,24 @@ public class TestValue extends TestBase { ...@@ -332,18 +332,24 @@ public class TestValue extends TestBase {
} }
private void testArray() { private void testArray() {
ValueArray src = ValueArray.get( ValueArray src = ValueArray.get(String.class,
new Value[] {ValueString.get("1"), ValueString.get("22"), ValueString.get("333")}); new Value[] {ValueString.get("1"), ValueString.get("22"), ValueString.get("333")});
assertEquals(6, src.getPrecision()); assertEquals(6, src.getPrecision());
assertSame(src, src.convertPrecision(5, false)); assertSame(src, src.convertPrecision(5, false));
assertSame(src, src.convertPrecision(6, true)); assertSame(src, src.convertPrecision(6, true));
ValueArray exp = ValueArray.get( ValueArray exp = ValueArray.get(String.class,
new Value[] {ValueString.get("1"), ValueString.get("22"), ValueString.get("33")}); new Value[] {ValueString.get("1"), ValueString.get("22"), ValueString.get("33")});
assertEquals(exp, src.convertPrecision(5, true)); Value got = src.convertPrecision(5, true);
exp = ValueArray.get(new Value[] {ValueString.get("1"), ValueString.get("22")}); assertEquals(exp, got);
assertEquals(exp, src.convertPrecision(3, true)); assertEquals(String.class, ((ValueArray) got).getComponentType());
exp = ValueArray.get(new Value[0]); exp = ValueArray.get(String.class, new Value[] {ValueString.get("1"), ValueString.get("22")});
assertEquals(exp, src.convertPrecision(0, true)); got = src.convertPrecision(3, true);
assertEquals(exp, got);
assertEquals(String.class, ((ValueArray) got).getComponentType());
exp = ValueArray.get(String.class, new Value[0]);
got = src.convertPrecision(0, true);
assertEquals(exp, got);
assertEquals(String.class, ((ValueArray) got).getComponentType());
} }
private void testUUID() { private void testUUID() {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论