-
Notifications
You must be signed in to change notification settings - Fork 47
/
Copy pathWolframModelRuleValue.wlt
197 lines (177 loc) · 7.08 KB
/
WolframModelRuleValue.wlt
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
<|
"WolframModelRuleValue" -> <|
"init" -> (
Attributes[Global`testUnevaluated] = Attributes[Global`testSymbolLeak] = {HoldAll};
Global`testUnevaluated[args___] := SetReplace`PackageScope`testUnevaluated[VerificationTest, args];
Global`testSymbolLeak[args___] := SetReplace`PackageScope`testSymbolLeak[VerificationTest, args];
),
"tests" -> {
testSymbolLeak[
WolframModelRuleValue[{{1, 2}} -> {{1, 3}, {1, 3}, {3, 2}}]
],
testUnevaluated[
WolframModelRuleValue[],
{WolframModelRuleValue::argt}
],
testUnevaluated[
WolframModelRuleValue[1, 2, 3],
{WolframModelRuleValue::argt}
],
testUnevaluated[
WolframModelRuleValue[#],
{WolframModelRuleValue::invalidRule}
] & /@ {1, {1, 2}, {{1, 2}}, $$$invalidrule$$$, "invalidRule", {{{1, 2}} -> {{2, 3}}, {{1, 2}}}},
testUnevaluated[
WolframModelRuleValue[{{1, 2}} -> {{1, 3}, {1, 3}, {3, 2}}, #],
{WolframModelRuleValue::invalidProperty}
] & /@ {sdf, {sdd, "sdf"}},
testUnevaluated[
WolframModelRuleValue[{{1, 2}} -> {{1, 3}, {1, 3}, {3, 2}}, #],
{WolframModelRuleValue::unknownProperty}
] & /@ {"sdf", {"sdd", "sdf"}},
testUnevaluated[
WolframModelRuleValue[Rule[1], "NodesDroppedAdded"],
{Rule::argr, WolframModelRuleValue::invalidRule}
],
testUnevaluated[
WolframModelRuleValue[Rule[1, 2, 3]],
{Rule::argrx, WolframModelRuleValue::invalidRule}
],
testUnevaluated[
WolframModelRuleValue[{Rule[1, 2], Rule[1, 2, 3]}, "NodesDroppedAdded"],
{Rule::argrx, WolframModelRuleValue::invalidRule}
],
VerificationTest[
Keys[WolframModelRuleValue[{}]],
$WolframModelRuleProperties
],
VerificationTest[
Keys[WolframModelRuleValue[{{1, 2}} -> {{1, 3}, {3, 2}}]],
$WolframModelRuleProperties
],
VerificationTest[
WolframModelRuleValue[{{1, 2}} -> {{1, 3}, {3, 2}}, {"Signature", "TransformationCount"}],
WolframModelRuleValue[{{1, 2}} -> {{1, 3}, {3, 2}}, #] & /@ {"Signature", "TransformationCount"}
],
{
VerificationTest[
WolframModelRuleValue[#1, "ConnectedInput"],
#2
],
VerificationTest[
WolframModelRuleValue[#1 /. Rule[a_, b_] :> Rule[b, a], "ConnectedOutput"],
#2
]
} & @@@ {
{1 -> 2, True},
{{1, 2} -> 3, False},
{{{1}, {2}} -> 3, False},
{{{1, 2}, {2}} -> 3, True},
{{{0, 1}, {0, 2}, {0, 3}} -> {{4, 5}, {5, 4}, {4, 6}, {6, 4}, {5, 6}, {6, 5}, {4, 1}, {5, 2}, {6, 3}}, True},
{{{1}, {1, 2}} -> {{1, 2}, 2, {2, 3}}, True},
{{{1, 2}} -> {{2, 3}}, True},
{{{1, 2, 3}, {3, 4, 5}} -> {{1, 3, 5}}, True},
{{{1, 2}, {1, 3}} -> {{2, 2}, {3, 2}, {4, 3}, {5, 4}, {5, 6}}, True},
{{{{1, 2}, {2, 3}} -> {{1, 3}}, {{1, 2, 3}, {3, 4, 5}} -> {{1, 3, 5}}}, True},
{{{{1, 2}, {2, 3}} -> {{1, 3}}, {{1, 2, 3}, {4, 4, 5}} -> {{1, 3, 5}}}, False},
{{{{1, 2}, {3, 3}} -> {{1, 3}}, {{1, 2, 3}, {4, 4, 5}} -> {{1, 3, 5}}}, False},
{{{1, 2, 3}, {4, 4, 5}} -> {{1, 3, 5}}, False},
{{{1, 2}} -> {}, True},
{{} -> {{1, 2}}, True},
{{} -> {}, True},
{{}, True},
{{{}} -> {{}}, True},
{{{}} -> {{}, {1}}, True},
{{{1}} -> {{}}, True}
},
VerificationTest[
WolframModelRuleValue[#1, "ConnectedInputOutputUnion"],
#2
] & @@@ {
{1 -> 2, False},
{{1, 2} -> 3, False},
{{1, 2} -> {2, 3}, False},
{{{1, 2}, {2, 3}} -> {{3, 4}}, True},
{{{1, 2}, {3, 4}} -> {{2, 3}}, True},
{{{1, 2}, {3, 4}} -> {{4, 5}}, False},
{{{1, 2}} -> {{2, 3}, {4, 5}}, False},
{{{1, 2}, {2, 3}} -> {{4, 5}, {5, 6}}, False},
{{{0, 1}, {0, 2}, {0, 3}} -> {{4, 5}, {5, 4}, {4, 6}, {6, 4}, {5, 6}, {6, 5}, {4, 1}, {5, 2}, {6, 3}}, True},
{{{1}, {1, 2}} -> {{1, 2}, 2, {2, 3}}, True},
{{{1, 2, 3}, {4, 4, 5}} -> {{1, 3, 5}}, True},
{{{{1, 2}, {2, 3}} -> {{1, 3}}, {{1, 2, 3}, {4, 4, 5}} -> {{1, 3, 2}}}, False},
{{{1, 2}} -> {}, True},
{{} -> {{1, 2}}, True},
{{} -> {}, True},
{{}, True},
{{{}} -> {{}}, True},
{{{}} -> {{}, {1}}, True},
{{{1}} -> {{}}, True},
{{{1}} -> {{}, {2}}, False}
},
VerificationTest[
WolframModelRuleValue[#1, {"MaximumArity", "NodeCounts", "NodesDroppedAdded", "Signature"}],
{##2}
] & @@@ {
{1 -> 2, 1, 1 -> 1, {1, 1}, {{1, 1}} -> {{1, 1}}},
{{1, 2} -> 3, 1, 2 -> 1, {2, 1}, {{2, 1}} -> {{1, 1}}},
{{{1}, {2}} -> {{3}}, 1, 2 -> 1, {2, 1}, {{2, 1}} -> {{1, 1}}},
{{{1, 2}, {2}} -> {{1}, {1, 2}}, 2, 2 -> 2, {0, 0}, {{1, 1}, {1, 2}} -> {{1, 1}, {1, 2}}},
{{{1, 2}, {2}} -> {{1}}, 2, 2 -> 1, {1, 0}, {{1, 1}, {1, 2}} -> {{1, 1}}},
{{{2}} -> {{1}, {1, 2}}, 2, 1 -> 2, {0, 1}, {{1, 1}} -> {{1, 1}, {1, 2}}},
{{{0, 1}, {0, 2}, {0, 3}} -> {{4, 5}, {5, 4}, {4, 6}, {6, 4}, {5, 6}, {6, 5}, {4, 1}, {5, 2}, {6, 3}},
2, 4 -> 6, {1, 3}, {{3, 2}} -> {{9, 2}}},
{{{1}, {1, 2}} -> {{1, 2}, 2, {2, 3}}, 2, 2 -> 3, {0, 1}, {{1, 1}, {1, 2}} -> {{1, 1}, {2, 2}}},
{{{{1, 2}, {2, 3}} -> {{1, 3}}, {{1, 2, 3}, {3, 4, 5}} -> {{1, 3, 5}}},
3, {3 -> 2, 5 -> 3}, {{1, 0}, {2, 0}}, {{{2, 2}} -> {{1, 2}}, {{2, 3}} -> {{1, 3}}}},
{{{1, 2}} -> {}, 2, 2 -> 0, {2, 0}, {{1, 2}} -> {}},
{{} -> {{1, 2}}, 2, 0 -> 2, {0, 2}, {} -> {{1, 2}}},
{{} -> {}, 0, 0 -> 0, {0, 0}, {} -> {}},
{{}, 0, {}, {}, {}},
{{{}} -> {{}}, 0, 0 -> 0, {0, 0}, {{1, 0}} -> {{1, 0}}},
{{{}} -> {{}, {1}}, 1, 0 -> 1, {0, 1}, {{1, 0}} -> {{1, 0}, {1, 1}}},
{{{1}} -> {{}}, 1, 1 -> 0, {1, 0}, {{1, 1}} -> {{1, 0}}},
{{{1}} -> {{}, {2}}, 1, 1 -> 1, {1, 1}, {{1, 1}} -> {{1, 0}, {1, 1}}}
},
VerificationTest[
WolframModelRuleValue[#1, "TraditionalSignature"],
#2
] & @@@ {
{1 -> 2, Subscript[1, 1] -> Subscript[1, 1]},
{{{1, 2}, {2}} -> {{1}, {1, 2}},
Row[{Subscript[1, 1], Subscript[1, 2]}] -> Row[{Subscript[1, 1], Subscript[1, 2]}]},
{{{1, 2}} -> {}, Subscript[1, 2] -> "\[EmptySet]"},
{{} -> {{1, 2}}, "\[EmptySet]" -> Subscript[1, 2]},
{{} -> {}, "\[EmptySet]" -> "\[EmptySet]"},
{{}, {}},
{{{}} -> {{}}, Subscript[1, 0] -> Subscript[1, 0]}
},
VerificationTest[
WolframModelRuleValue[#1, "TransformationCount"],
#2
] & @@@ {
{1 -> 2, 1},
{{{1}} -> {{1}}, 1},
{{1 -> 2, 3 -> 4}, 2},
{{}, 0},
{{{}} -> {{}}, 1}
}
}
|>,
"$WolframModelRuleProperties" -> <|
"tests" -> {
VerificationTest[
ListQ @ $WolframModelRuleProperties
],
VerificationTest[
Length[$WolframModelRuleProperties] > 0
],
VerificationTest[
AllTrue[StringQ, $WolframModelRuleProperties]
],
VerificationTest[
OrderedQ[$WolframModelRuleProperties]
]
}
|>
|>