summaryrefslogtreecommitdiffstats
path: root/config-lib/src/test/java/com/yahoo/config/ConfigInstanceEqualsTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'config-lib/src/test/java/com/yahoo/config/ConfigInstanceEqualsTest.java')
-rw-r--r--config-lib/src/test/java/com/yahoo/config/ConfigInstanceEqualsTest.java184
1 files changed, 184 insertions, 0 deletions
diff --git a/config-lib/src/test/java/com/yahoo/config/ConfigInstanceEqualsTest.java b/config-lib/src/test/java/com/yahoo/config/ConfigInstanceEqualsTest.java
new file mode 100644
index 00000000000..f99639420e2
--- /dev/null
+++ b/config-lib/src/test/java/com/yahoo/config/ConfigInstanceEqualsTest.java
@@ -0,0 +1,184 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.config;
+
+import com.yahoo.test.AppConfig;
+import com.yahoo.test.FunctionTestConfig;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.File;
+import java.util.Arrays;
+
+import static com.yahoo.test.FunctionTestConfig.BasicStruct;
+import static com.yahoo.test.FunctionTestConfig.Enum_val;
+import static com.yahoo.test.FunctionTestConfig.Enumarr;
+import static com.yahoo.test.FunctionTestConfig.Myarray;
+import static com.yahoo.test.FunctionTestConfig.RootStruct;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.not;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertThat;
+
+public class ConfigInstanceEqualsTest {
+ FunctionTestConfig config1;
+ FunctionTestConfig.Builder builder2;
+ FunctionTestConfig config2;
+
+ @Before
+ public void reset() {
+ config1 = new FunctionTestConfig(newBuilder());
+ builder2 = newBuilder();
+ config2 = new FunctionTestConfig(builder2);
+ }
+
+ @Test
+ public void require_same_hashCode_for_equal_instances() {
+ assertThat(config1.hashCode(), is(config2.hashCode()));
+ }
+
+ @Test
+ public void require_true_for_equal_instances() {
+ assertThat(config1, is(config2));
+ }
+
+ @Test
+ public void require_false_for_null() {
+ assertThat(config1, not((FunctionTestConfig) null));
+
+ }
+
+ @Test
+ public void require_false_for_different_subclass() {
+ assertFalse(config1.equals(new AppConfig(new AppConfig.Builder())));
+ }
+
+ @Test
+ public void require_false_for_different_scalars_at_root_node() {
+ assertThat(config1, not(new FunctionTestConfig(newBuilder().bool_val(true))));
+ assertThat(config1, not(new FunctionTestConfig(newBuilder().int_val(0))));
+ assertThat(config1, not(new FunctionTestConfig(newBuilder().long_val(0L))));
+ assertThat(config1, not(new FunctionTestConfig(newBuilder().double_val(0.0))));
+ assertThat(config1, not(new FunctionTestConfig(newBuilder().string_val(""))));
+ assertThat(config1, not(new FunctionTestConfig(newBuilder().enum_val(Enum_val.FOO))));
+ assertThat(config1, not(new FunctionTestConfig(newBuilder().refval(""))));
+ assertThat(config1, not(new FunctionTestConfig(newBuilder().fileVal(""))));
+ }
+
+ @Test
+ public void require_false_for_different_leaf_array_at_root_node() {
+ builder2.longarr.set(0, 0L);
+ assertThat(config1, not(new FunctionTestConfig(builder2)));
+ }
+
+ @Test
+ public void require_false_for_different_scalar_in_struct() {
+ builder2.basicStruct(new BasicStruct.Builder(config1.basicStruct()).bar(0));
+ assertThat(config1, not(new FunctionTestConfig(builder2)));
+ }
+
+ @Test
+ public void require_false_for_different_scalar_in_inner_array() {
+ builder2.myarray.get(0).intval(0);
+ assertThat(config1, not(new FunctionTestConfig(builder2)));
+ }
+
+ @Test
+ public void require_false_for_different_leaf_array_in_inner_array() {
+ builder2.myarray.get(0).stringval.set(0, "");
+ assertThat(config1, not(new FunctionTestConfig(builder2)));
+ }
+
+ @Test
+ public void require_equal_structs_for_equal_configs() {
+ assertThat(config1.basicStruct(), is(config2.basicStruct()));
+ assertThat(config1.rootStruct(), is(config2.rootStruct()));
+ assertThat(config1.rootStruct().inner0(), is(config2.rootStruct().inner0()));
+ }
+
+ @Test
+ public void require_equal_inner_arrays_for_equal_configs() {
+ assertThat(config1.myarray(), is(config2.myarray()));
+ assertThat(config1.myarray(0).anotherarray(), is(config2.myarray(0).anotherarray()));
+ }
+
+ @Test
+ public void require_equal_inner_array_elements_for_equal_configs() {
+ assertThat(config1.myarray(0), is(config2.myarray(0)));
+ assertThat(config1.myarray(0).anotherarray(0), is(config2.myarray(0).anotherarray(0)));
+ }
+
+ @Test
+ public void require_equal_leaf_arrays_for_equal_configs() {
+ assertThat(config1.intarr(), is(config2.intarr()));
+ assertThat(config1.boolarr(), is(config2.boolarr()));
+ assertThat(config1.longarr(), is(config2.longarr()));
+ assertThat(config1.doublearr(), is(config2.doublearr()));
+ assertThat(config1.stringarr(), is(config2.stringarr()));
+ assertThat(config1.enumarr(), is(config2.enumarr()));
+ assertThat(config1.refarr(), is(config2.refarr()));
+ assertThat(config1.fileArr(), is(config2.fileArr()));
+ }
+
+ private static FunctionTestConfig.Builder newBuilder() {
+ FunctionTestConfig.Builder builder = new FunctionTestConfig.Builder();
+
+ return builder.bool_val(false).
+ int_val(5).
+ long_val(12345678901L).
+ double_val(41.23).
+ string_val("foo").
+ enum_val(Enum_val.FOOBAR).
+ refval(":parent:").
+ fileVal("etc").
+ pathVal(FileReference.mockFileReferenceForUnitTesting(new File("pom.xml"))).
+ boolarr(false).
+ longarr(9223372036854775807L).
+ longarr(-9223372036854775808L).
+ doublearr(2344.0).
+ doublearr(123.0).
+ stringarr("bar").
+ enumarr(Enumarr.VALUES).
+ refarr(Arrays.asList(":parent:", ":parent", "parent:")). // test collection based setter
+ fileArr("bin").
+
+ basicStruct(new BasicStruct.Builder().
+ foo("basicFoo").
+ bar(3).
+ intArr(310)).
+
+ rootStruct(new RootStruct.Builder().
+ inner0(new RootStruct.Inner0.Builder().
+ index(11)).
+ inner1(new RootStruct.Inner1.Builder().
+ index(12)).
+ innerArr(new RootStruct.InnerArr.Builder().
+ boolVal(true).
+ stringVal("deep"))).
+
+ myarray(new Myarray.Builder().
+ intval(-5).
+ stringval("baah").
+ stringval("yikes").
+ enumval(Myarray.Enumval.INNER).
+ refval(":parent:").
+ fileVal("file0").
+ anotherarray(new Myarray.Anotherarray.Builder().
+ foo(7)).
+ myStruct(new Myarray.MyStruct.Builder().
+ a(1).
+ b(2))).
+
+ myarray(new Myarray.Builder().
+ intval(5).
+ enumval(Myarray.Enumval.INNER).
+ refval(":parent:").
+ fileVal("file1").
+ anotherarray(new Myarray.Anotherarray.Builder().
+ foo(1).
+ foo(2)).
+ myStruct(new Myarray.MyStruct.Builder().
+ a(-1).
+ b(-2)));
+
+ }
+} \ No newline at end of file