1{
2    "description": "Javascript Code with Scope",
3    "bson_type": "0x0F",
4    "test_key": "a",
5    "valid": [
6        {
7            "description": "Empty code string, empty scope",
8            "canonical_bson": "160000000F61000E0000000100000000050000000000",
9            "canonical_extjson": "{\"a\" : {\"$code\" : \"\", \"$scope\" : {}}}"
10        },
11        {
12            "description": "Non-empty code string, empty scope",
13            "canonical_bson": "1A0000000F610012000000050000006162636400050000000000",
14            "canonical_extjson": "{\"a\" : {\"$code\" : \"abcd\", \"$scope\" : {}}}"
15        },
16        {
17            "description": "Empty code string, non-empty scope",
18            "canonical_bson": "1D0000000F61001500000001000000000C000000107800010000000000",
19            "canonical_extjson": "{\"a\" : {\"$code\" : \"\", \"$scope\" : {\"x\" : {\"$numberInt\": \"1\"}}}}"
20        },
21        {
22            "description": "Non-empty code string and non-empty scope",
23            "canonical_bson": "210000000F6100190000000500000061626364000C000000107800010000000000",
24            "canonical_extjson": "{\"a\" : {\"$code\" : \"abcd\", \"$scope\" : {\"x\" : {\"$numberInt\": \"1\"}}}}"
25        },
26        {
27            "description": "Unicode and embedded null in code string, empty scope",
28            "canonical_bson": "1A0000000F61001200000005000000C3A9006400050000000000",
29            "canonical_extjson": "{\"a\" : {\"$code\" : \"\\u00e9\\u0000d\", \"$scope\" : {}}}"
30        }
31    ],
32    "decodeErrors": [
33        {
34            "description": "field length zero",
35            "bson": "280000000F6100000000000500000061626364001300000010780001000000107900010000000000"
36        },
37        {
38            "description": "field length negative",
39            "bson": "280000000F6100FFFFFFFF0500000061626364001300000010780001000000107900010000000000"
40        },
41        {
42            "description": "field length too short (less than minimum size)",
43            "bson": "160000000F61000D0000000100000000050000000000"
44        },
45        {
46            "description": "field length too short (truncates scope)",
47            "bson": "280000000F61001F0000000500000061626364001300000010780001000000107900010000000000"
48        },
49        {
50            "description": "field length too long (clips outer doc)",
51            "bson": "280000000F6100210000000500000061626364001300000010780001000000107900010000000000"
52        },
53        {
54            "description": "field length too long (longer than outer doc)",
55            "bson": "280000000F6100FF0000000500000061626364001300000010780001000000107900010000000000"
56        },
57        {
58            "description": "bad code string: length too short",
59            "bson": "280000000F6100200000000400000061626364001300000010780001000000107900010000000000"
60        },
61        {
62            "description": "bad code string: length too long (clips scope)",
63            "bson": "280000000F6100200000000600000061626364001300000010780001000000107900010000000000"
64        },
65        {
66            "description": "bad code string: negative length",
67            "bson": "280000000F610020000000FFFFFFFF61626364001300000010780001000000107900010000000000"
68        },
69        {
70            "description": "bad code string: length longer than field",
71            "bson": "280000000F610020000000FF00000061626364001300000010780001000000107900010000000000"
72        },
73        {
74            "description": "bad scope doc (field has bad string length)",
75            "bson": "1C0000000F001500000001000000000C000000020000000000000000"
76        }
77    ]
78}
79