aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src/test/java/com/yahoo/config/model/ConfigModelBuilderTest.java
blob: 11de928c14cdcce3bb161908a01211b2794251ce (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model;

import com.yahoo.config.model.builder.xml.ConfigModelBuilder;
import com.yahoo.config.model.builder.xml.ConfigModelId;
import org.junit.jupiter.api.Test;
import org.w3c.dom.Element;

import java.util.ArrayList;
import java.util.List;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotEquals;

/**
 * @author Ulf Lilleengen
 * @since 5.1
 */
public class ConfigModelBuilderTest {
    @Test
    void testEquals() {
        ConfigModelBuilder<?> ba = new A.Builder();
        ConfigModelBuilder<?> ba2 = new A2.Builder();
        ConfigModelBuilder<?> bb = new B.Builder();
        ConfigModelBuilder<?> bb2 = new B2.Builder();

        assertEquals(ba, ba);
        assertEquals(ba, ba2);
        assertNotEquals(ba, bb);
        assertNotEquals(ba, bb2);

        assertEquals(ba2, ba);
        assertEquals(ba2, ba2);
        assertNotEquals(ba2, bb);
        assertNotEquals(ba2, bb2);

        assertNotEquals(bb, ba);
        assertNotEquals(bb, ba2);
        assertEquals(bb, bb);
        assertNotEquals(bb, bb2);

        assertNotEquals(bb2, ba);
        assertNotEquals(bb2, ba2);
        assertNotEquals(bb2, bb);
        assertEquals(bb2, bb2);

        assertNotEquals(ba, new ArrayList<>());
    }

    private static class A extends ConfigModel {
        public A(ConfigModelContext modelContext) { super(modelContext); }
        public static class Builder extends ConfigModelBuilder<A> {
            public Builder() { super(A.class); }

            @Override
            public List<ConfigModelId> handlesElements() {
                List<ConfigModelId> ids = new ArrayList<>();
                ids.add(ConfigModelId.fromName("foo"));
                ids.add(ConfigModelId.fromName("bar"));
                return ids;
            }

            @Override
            public void doBuild(A model, Element spec, ConfigModelContext modelContext) { }
        }

    }

    private static class A2 extends ConfigModel {
        public A2(ConfigModelContext modelContext) { super(modelContext); }
        public static class Builder extends ConfigModelBuilder<A2> {
            public Builder() { super(A2.class); }

            @Override
            public List<ConfigModelId> handlesElements() {
                List<ConfigModelId> ids = new ArrayList<>();
                ids.add(ConfigModelId.fromName("foo"));
                ids.add(ConfigModelId.fromName("bar"));
                return ids;
            }

            @Override
            public void doBuild(A2 model, Element spec, ConfigModelContext modelContext) { }
        }
    }

    private static class B extends ConfigModel {
        public B(ConfigModelContext modelContext) { super(modelContext); }
        public static class Builder extends ConfigModelBuilder<B> {
            public Builder() { super(B.class); }

            @Override
            public List<ConfigModelId> handlesElements() {
                List<ConfigModelId> ids = new ArrayList<>();
                ids.add(ConfigModelId.fromName("bar"));
                return ids;
            }

            @Override
            public void doBuild(B model, Element spec, ConfigModelContext modelContext) { }
        }
    }

    private static class B2 extends ConfigModel {
        public B2(ConfigModelContext modelContext) { super(modelContext); }
        public static class Builder extends ConfigModelBuilder<B2> {
            public Builder() { super(B2.class); }

            @Override
            public List<ConfigModelId> handlesElements() {
                List<ConfigModelId> ids = new ArrayList<>();
                ids.add(ConfigModelId.fromName("foo"));
                ids.add(ConfigModelId.fromName("bim"));
                return ids;
            }

            @Override
            public void doBuild(B2 model, Element spec, ConfigModelContext modelContext) { }
        }
    }
}