Initial Dever 0.0.1
This commit is contained in:
commit
81233d098c
1479 files changed
+163782
No files matched your search
@@ -0,0 +1,100 @@
|
||||
type Payload { values: List<Int>, label: Text, first: Int, second: Int }
|
||||
|
||||
type Floating { values: List<Float?>, optional: Float? }
|
||||
|
||||
type Failure { error First, error Second }
|
||||
|
||||
encode(values: List<Int>, label: Text) (answer: Text) {
|
||||
payload = Payload { second = 2, label = label, values = values, first = 1 }
|
||||
answer = dever.json.toText(dever.json.encode(payload))
|
||||
}
|
||||
|
||||
projected(source: Payload) (answer: Text) {
|
||||
payload = Payload { values = source.values, label = source.label, first = source.first, second = source.second }
|
||||
answer = dever.json.toText(dever.json.encode(payload))
|
||||
}
|
||||
|
||||
overwritten(values: List<Int>) (answer: Text) {
|
||||
payload = Payload { values = values, label = "old", first = 1, second = 2 }
|
||||
before = dever.json.toText(dever.json.encode(payload))
|
||||
payload = Payload { values = [9], label = "new", first = 3, second = 2 }
|
||||
payload.first = 4
|
||||
answer = before + dever.json.toText(dever.json.encode(payload))
|
||||
}
|
||||
|
||||
reused(values: List<Int>) (answer: Text) {
|
||||
payload = Payload { values = values, label = "old", first = 1, second = 2 }
|
||||
before = dever.json.toText(dever.json.encode(payload))
|
||||
payload.first = 4
|
||||
answer = before + dever.json.toText(dever.json.encode(payload))
|
||||
}
|
||||
|
||||
intervening(source: Payload) (answer: Text) {
|
||||
payload = Payload { values = source.values, label = source.label, first = source.first, second = source.second }
|
||||
source.values = [9]
|
||||
answer = dever.json.toText(dever.json.encode(payload))
|
||||
}
|
||||
|
||||
escaping(values: List<Int>) (answer: Payload) {
|
||||
payload = Payload { values = values, label = "old", first = 1, second = 2 }
|
||||
answer = payload
|
||||
}
|
||||
|
||||
finite(values: List<Float?>, optional: Float?) (answer: Json) {
|
||||
payload = Floating { values = values, optional = optional }
|
||||
answer = dever.json.encode(payload)
|
||||
}
|
||||
|
||||
failed(value: dever.json.JsonResult.Parsed(document)) (answer: Bool) recover("检查视图有限值") { answer = false }
|
||||
failed(value: dever.json.JsonResult.Failed(message)) (answer: Bool) recover("检查视图有限值") { answer = message == "non-finite Float cannot be encoded" }
|
||||
|
||||
firstFail(stop: true) (answer: Int) { fail(Failure.First) }
|
||||
firstFail(stop: false) (answer: Int) { answer = 1 }
|
||||
|
||||
secondFail(stop: true) (answer: Int) { fail(Failure.Second) }
|
||||
secondFail(stop: false) (answer: Int) { answer = 2 }
|
||||
|
||||
failureOrder(values: List<Int>, stop: Bool) (answer: Text) {
|
||||
payload = Payload { values = values, second = secondFail(stop), first = firstFail(stop), label = "old" }
|
||||
answer = dever.json.toText(dever.json.encode(payload))
|
||||
}
|
||||
|
||||
faultEntry() (answer: Int) {
|
||||
values = [1, 2, 3]
|
||||
text = failureOrder(values, true)
|
||||
answer = length(text) + sum(values)
|
||||
}
|
||||
|
||||
verify() (answer: Bool) {
|
||||
values = [1, 2, 3]
|
||||
label = "old"
|
||||
expected = "{\"values\":[1,2,3],\"label\":\"old\",\"first\":1,\"second\":2}"
|
||||
source = Payload { values = values, label = label, first = 1, second = 2 }
|
||||
answer = encode(values, label) == expected and projected(source) == expected
|
||||
answer = answer and overwritten(values) == expected + "{\"values\":[9],\"label\":\"new\",\"first\":4,\"second\":2}"
|
||||
answer = answer and reused(values) == expected + "{\"values\":[1,2,3],\"label\":\"old\",\"first\":4,\"second\":2}"
|
||||
answer = answer and intervening(source) == expected and escaping(values) == source
|
||||
answer = answer and failureOrder(values, false) == expected
|
||||
answer = answer and sum(values) == 6 and label == "old" and sum(source.values) == 6
|
||||
numbers = [float.parse("NaN")]
|
||||
answer = answer and failed(result(finite(numbers, null))) and length(numbers) == 1
|
||||
finite_values = [float.parse("1")]
|
||||
answer = answer and failed(result(finite(finite_values, float.parse("inf")))) and length(finite_values) == 1
|
||||
answer = answer and failed(result(finite([float.parse("-inf")], null)))
|
||||
answer = answer and encode([1, 2, 3], "old") == expected
|
||||
answer = answer and fragmentsVerify()
|
||||
}
|
||||
|
||||
type Fragment { label: Text, value: Json }
|
||||
|
||||
fragments(values: List<Fragment?>) (answer: Text) {
|
||||
answer = dever.json.toText(dever.json.encode(values))
|
||||
}
|
||||
|
||||
fragmentsVerify() (answer: Bool) {
|
||||
value = dever.json.fromText(" \n{\"a\":[1e9999,-0]}\t ")
|
||||
row = Fragment { label = "雪\"", value = value }
|
||||
expected = "[{\"label\":\"雪\\\"\",\"value\":{\"a\":[1e9999,-0]}},null]"
|
||||
answer = fragments([row, null]) == expected and fragments([row, null]) == expected
|
||||
answer = answer and dever.json.toText(value) == " \n{\"a\":[1e9999,-0]}\t "
|
||||
}
|
||||
Reference in new issue
Block a user