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 package gov.nist.secauto.metaschema.core.testing;
28
29 import gov.nist.secauto.metaschema.core.model.IFlagContainer;
30 import gov.nist.secauto.metaschema.core.model.IFlagDefinition;
31 import gov.nist.secauto.metaschema.core.model.IFlagInstance;
32 import gov.nist.secauto.metaschema.core.model.MetaschemaModelConstants;
33
34 import org.jmock.Expectations;
35 import org.jmock.Mockery;
36
37 import edu.umd.cs.findbugs.annotations.NonNull;
38
39 public class FlagBuilder
40 extends AbstractModelBuilder<FlagBuilder> {
41
42 private boolean required;
43
44 private FlagBuilder(@NonNull Mockery ctx) {
45 super(ctx);
46 }
47
48 @NonNull
49 public static FlagBuilder builder(@NonNull Mockery ctx) {
50 return new FlagBuilder(ctx).reset();
51 }
52
53 @Override
54 public FlagBuilder reset() {
55 this.required = MetaschemaModelConstants.DEFAULT_FLAG_REQUIRED;
56 return this;
57 }
58
59 public FlagBuilder required(boolean required) {
60 this.required = required;
61 return this;
62 }
63
64 @NonNull
65 public IFlagInstance toInstance(
66 @NonNull IFlagContainer parent) {
67 IFlagDefinition def = toDefinition();
68 return toInstance(parent, def);
69 }
70
71 @NonNull
72 public IFlagInstance toInstance(
73 @NonNull IFlagContainer parent,
74 @NonNull IFlagDefinition definition) {
75 validate();
76
77 IFlagInstance retval = mock(IFlagInstance.class);
78
79 applyNamedInstance(retval, definition, parent);
80
81 getContext().checking(new Expectations() {
82 {
83 allowing(retval).isRequired();
84 will(returnValue(required));
85 }
86 });
87
88 return retval;
89 }
90
91 @NonNull
92 public IFlagDefinition toDefinition() {
93 validate();
94
95 IFlagDefinition retval = mock(IFlagDefinition.class);
96 applyDefinition(retval);
97 return retval;
98 }
99
100
101
102
103
104
105
106 }