Initial Dever 0.0.1
This commit is contained in:
commit
81233d098c
1479 files changed
+163782
No files matched your search
@@ -0,0 +1,135 @@
|
||||
type Failure {
|
||||
error Missing
|
||||
}
|
||||
|
||||
readNumber(value: Json?) (number: Int) {
|
||||
number = selectNumber(value)
|
||||
}
|
||||
|
||||
selectNumber(value: null) (number: Int) {
|
||||
fail(Failure.Missing)
|
||||
}
|
||||
selectNumber(value: Json) (number: Int) {
|
||||
number = dever.json.asInteger(value)
|
||||
}
|
||||
|
||||
verify() (answer: Bool) {
|
||||
value = dever.json.fromText("{\"count\":42,\"ratio\":1e+03,\"name\":\"dever\"}")
|
||||
encoded = dever.json.encode(value)
|
||||
snapshot = dever.json.toText(value)
|
||||
count = readNumber(dever.json.propertyValue(value, "count"))
|
||||
answer = count == 42 and snapshot == dever.json.toText(encoded) and snapshot == "{\"count\":42,\"ratio\":1e+03,\"name\":\"dever\"}"
|
||||
raw = dever.json.fromText(" 1e9999 ")
|
||||
answer = answer and dever.json.toText(dever.json.encode(raw)) == " 1e9999 "
|
||||
}
|
||||
|
||||
documentVerify() (answer: Bool) {
|
||||
document = dever.json.parse("{\"count\":42,\"name\":\"dever\"}")
|
||||
count = dever.json.property(document, document.root, "count")
|
||||
values = dever.json.parse("[1,2]")
|
||||
first = dever.json.element(values, values.root, 0)
|
||||
empty = dever.json.parse("{}")
|
||||
nested = dever.json.parse("{\"\":[{},[]]}")
|
||||
answer = count == 0 and first == 0 and dever.json.stringify(document) == "{\"count\":42,\"name\":\"dever\"}" and dever.json.stringify(empty) == "{}" and dever.json.property(empty, empty.root, "missing") == null and dever.json.stringify(nested) == "{\"\":[{},[]]}"
|
||||
}
|
||||
|
||||
invalid() (answer: Int) {
|
||||
value = dever.json.fromText("{")
|
||||
answer = 1
|
||||
}
|
||||
|
||||
type Payload {
|
||||
amount: Decimal
|
||||
id: Id
|
||||
names: List<Text>
|
||||
optional: Int?
|
||||
}
|
||||
|
||||
encodeVerify() (answer: Bool) {
|
||||
payload = Payload { amount = 12.5, id = dever.id.fromText("item"), names = ["雪"], optional = null }
|
||||
encoded = dever.json.toText(dever.json.encode(payload))
|
||||
answer = encoded == "{\"amount\":\"12.5\",\"id\":\"item\",\"names\":[\"雪\"],\"optional\":null}"
|
||||
answer = answer and dever.json.toText(dever.json.encode([true, false])) == "[true,false]"
|
||||
answer = answer and dever.json.toText(dever.json.encode(payload.optional)) == "null"
|
||||
answer = answer and dever.json.toText(dever.json.encode(42)) == "42"
|
||||
answer = answer and dever.json.toText(dever.json.encode(true)) == "true"
|
||||
answer = answer and dever.json.toText(dever.json.encode("雪\n\"")) == "\"雪\\n\\\"\""
|
||||
answer = answer and dever.json.toText(dever.json.encode(float.parse("-0.0"))) == "-0.0"
|
||||
object = dever.json.object({"a" = dever.json.integer(1), "b" = dever.json.array([dever.json.boolean(true), dever.json.string("雪"), dever.json.nullValue()])})
|
||||
answer = answer and dever.json.toText(object) == "{\"a\":1,\"b\":[true,\"雪\",null]}"
|
||||
}
|
||||
|
||||
manualVerify() (answer: Bool) {
|
||||
document = dever.json.value.Document {
|
||||
root = 2
|
||||
nodes = [
|
||||
dever.json.value.Value.Null,
|
||||
dever.json.value.Value.Number("1e9999"),
|
||||
dever.json.value.Value.Object({"answer" = 1})
|
||||
]
|
||||
}
|
||||
answer = dever.json.stringify(document) == "{\"answer\":1e9999}"
|
||||
answer = answer and dever.json.node(document, 1) == dever.json.value.Value.Number("1e9999")
|
||||
answer = answer and dever.json.node(document, 0) == dever.json.value.Value.Null
|
||||
answer = answer and dever.json.node(document, 2) == dever.json.value.Value.Object({"answer" = 1})
|
||||
answer = answer and dever.json.node(document, -1) == null and dever.json.property(document, 0, "answer") == null
|
||||
document.root = 0
|
||||
answer = answer and dever.json.stringify(document) == "null" and length(document.nodes) == 3
|
||||
empty = dever.json.value.Value.Object({})
|
||||
filled = dever.json.value.Value.Object({"first" = 1, "second" = 2})
|
||||
answer = answer and objectSize(empty) == 0 and objectSize(filled) == 2
|
||||
copied = put(objectMembers(filled), "third", 3)
|
||||
answer = answer and length(copied) == 3 and objectSize(filled) == 2
|
||||
answer = answer and length(objectMembers(empty)) == 0
|
||||
answer = answer and objectSize(dever.json.value.Value.Array([0, 1])) == 0
|
||||
}
|
||||
|
||||
objectSize(value: dever.json.value.Value.Object(members)) (answer: Int) { answer = length(members) }
|
||||
objectSize(value: dever.json.value.Value.Null) (answer: Int) { answer = 0 }
|
||||
objectSize(value: dever.json.value.Value.Boolean(flag)) (answer: Int) { answer = 0 }
|
||||
objectSize(value: dever.json.value.Value.Number(raw)) (answer: Int) { answer = 0 }
|
||||
objectSize(value: dever.json.value.Value.String(text)) (answer: Int) { answer = 0 }
|
||||
objectSize(value: dever.json.value.Value.Array(children)) (answer: Int) { answer = 0 }
|
||||
|
||||
objectMembers(value: dever.json.value.Value.Object(members)) (answer: Map<Text, Int>) { answer = members }
|
||||
objectMembers(value: dever.json.value.Value.Null) (answer: Map<Text, Int>) { answer = {} }
|
||||
objectMembers(value: dever.json.value.Value.Boolean(flag)) (answer: Map<Text, Int>) { answer = {} }
|
||||
objectMembers(value: dever.json.value.Value.Number(raw)) (answer: Map<Text, Int>) { answer = {} }
|
||||
objectMembers(value: dever.json.value.Value.String(text)) (answer: Map<Text, Int>) { answer = {} }
|
||||
objectMembers(value: dever.json.value.Value.Array(children)) (answer: Map<Text, Int>) { answer = {} }
|
||||
|
||||
nativeValueVerify() (answer: Bool) {
|
||||
empty = dever.json.value.Value.Object({})
|
||||
value = dever.json.value.Value.Object({"answer" = 1})
|
||||
answer = objectSize(empty) == 0 and objectSize(value) == 1
|
||||
answer = answer and objectMembers(value) == {"answer" = 1}
|
||||
answer = answer and length(objectMembers(dever.json.value.Value.Null)) == 0
|
||||
}
|
||||
|
||||
propertyFailed(result: dever.json.PropertyResult.Found(value)) (answer: Bool) recover("测试非对象失败") { answer = false }
|
||||
propertyFailed(result: dever.json.PropertyResult.Failed(message)) (answer: Bool) recover("测试非对象失败") { answer = length(message) > 0 }
|
||||
|
||||
writeFailed(result: dever.json.value.WriteResult.Written(text)) (answer: Bool) recover("检查手工文档错误") { answer = false }
|
||||
writeFailed(result: dever.json.value.WriteResult.Failed(node, message)) (answer: Bool) recover("检查手工文档错误") { answer = node == 1 and length(message) > 0 }
|
||||
|
||||
encodeFailed(result: dever.json.JsonResult.Parsed(value)) (answer: Bool) recover("检查非有限数编码错误") { answer = false }
|
||||
encodeFailed(result: dever.json.JsonResult.Failed(message)) (answer: Bool) recover("检查非有限数编码错误") { answer = length(message) > 0 }
|
||||
|
||||
failureVerify() (answer: Bool) {
|
||||
value = dever.json.fromText("42")
|
||||
document = dever.json.value.Document { root = 1, nodes = [dever.json.value.Value.Null, dever.json.value.Value.Array([1])] }
|
||||
property = propertyFailed(result(dever.json.propertyValue(value, "name")))
|
||||
write = writeFailed(result(dever.json.stringify(document)))
|
||||
encode = encodeFailed(result(dever.json.encode(float.parse("NaN"))))
|
||||
deepest = dever.json.fromText("[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]")
|
||||
array = encodeFailed(result(dever.json.array([deepest])))
|
||||
answer = property and write and encode and array
|
||||
missing = dever.json.value.Document { root = 1, nodes = [dever.json.value.Value.Null] }
|
||||
negative = dever.json.value.Document { root = 1, nodes = [dever.json.value.Value.Null, dever.json.value.Value.Array([-1])] }
|
||||
large = dever.json.value.Document { root = 1, nodes = [dever.json.value.Value.Null, dever.json.value.Value.Array([4294967296])] }
|
||||
answer = answer and writeFailed(result(dever.json.stringify(missing)))
|
||||
answer = answer and writeFailed(result(dever.json.stringify(negative)))
|
||||
answer = answer and writeFailed(result(dever.json.stringify(large)))
|
||||
invalid = dever.json.value.Document { root = 1, nodes = [dever.json.value.Value.Null, dever.json.value.Value.Number("invalid")] }
|
||||
answer = answer and writeFailed(result(dever.json.stringify(invalid)))
|
||||
}
|
||||
Reference in new issue
Block a user