1
2
3
4
5
6
7
8 package dev.metaschema.model.testing.testsuite;
9
10 import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
11 import org.apache.commons.lang3.builder.ToStringStyle;
12
13 import java.util.LinkedList;
14 import java.util.List;
15
16 import dev.metaschema.core.datatype.adapter.StringAdapter;
17 import dev.metaschema.core.model.IBoundObject;
18 import dev.metaschema.core.model.IMetaschemaData;
19 import dev.metaschema.core.model.JsonGroupAsBehavior;
20 import dev.metaschema.core.util.ObjectUtils;
21 import dev.metaschema.databind.model.annotations.BoundAssembly;
22 import dev.metaschema.databind.model.annotations.BoundFlag;
23 import dev.metaschema.databind.model.annotations.GroupAs;
24 import dev.metaschema.databind.model.annotations.MetaschemaAssembly;
25 import edu.umd.cs.findbugs.annotations.NonNull;
26 import edu.umd.cs.findbugs.annotations.Nullable;
27
28
29
30
31 @MetaschemaAssembly(
32 formalName = "Test Scenario",
33 description = "A test scenario that validates a metaschema and its content.",
34 name = "test-scenario",
35 moduleClass = MetaschemaTestSuiteModule.class)
36 public class TestScenario implements IBoundObject {
37 private final IMetaschemaData __metaschemaData;
38
39
40
41
42 @BoundFlag(
43 formalName = "Name",
44 description = "The name of this test scenario.",
45 name = "name",
46 required = true,
47 typeAdapter = StringAdapter.class)
48 private String _name;
49
50
51
52
53 @BoundAssembly(
54 formalName = "Generate Schema",
55 description = "Defines schema generation parameters and expected results.",
56 useName = "generate-schema")
57 private GenerateSchema _generateSchema;
58
59
60
61
62 @BoundAssembly(
63 formalName = "Validation Case",
64 description = "A content validation test case.",
65 useName = "validation-case",
66 maxOccurs = -1,
67 groupAs = @GroupAs(name = "validation-cases", inJson = JsonGroupAsBehavior.LIST))
68 private List<ValidationCase> _validationCases;
69
70
71
72
73
74 public TestScenario() {
75 this(null);
76 }
77
78
79
80
81
82
83
84
85 public TestScenario(IMetaschemaData data) {
86 this.__metaschemaData = data;
87 }
88
89 @Override
90 public IMetaschemaData getMetaschemaData() {
91 return __metaschemaData;
92 }
93
94
95
96
97
98
99
100
101
102 @NonNull
103 public String getName() {
104 return _name;
105 }
106
107
108
109
110
111
112
113
114
115
116 public void setName(@NonNull String value) {
117 _name = value;
118 }
119
120
121
122
123
124
125
126
127
128 @Nullable
129 public GenerateSchema getGenerateSchema() {
130 return _generateSchema;
131 }
132
133
134
135
136
137
138
139
140
141
142 public void setGenerateSchema(@Nullable GenerateSchema value) {
143 _generateSchema = value;
144 }
145
146
147
148
149
150
151
152
153
154 @NonNull
155 public List<ValidationCase> getValidationCases() {
156 if (_validationCases == null) {
157 _validationCases = new LinkedList<>();
158 }
159 return ObjectUtils.notNull(_validationCases);
160 }
161
162
163
164
165
166
167
168
169
170
171 public void setValidationCases(@NonNull List<ValidationCase> value) {
172 _validationCases = value;
173 }
174
175
176
177
178
179
180
181
182 public boolean addValidationCase(ValidationCase item) {
183 ValidationCase value = ObjectUtils.requireNonNull(item, "item cannot be null");
184 if (_validationCases == null) {
185 _validationCases = new LinkedList<>();
186 }
187 return _validationCases.add(value);
188 }
189
190
191
192
193
194
195
196
197
198 public boolean removeValidationCase(ValidationCase item) {
199 ValidationCase value = ObjectUtils.requireNonNull(item, "item cannot be null");
200 return _validationCases != null && _validationCases.remove(value);
201 }
202
203 @Override
204 public String toString() {
205 return ObjectUtils.notNull(new ReflectionToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).toString());
206 }
207 }