diff options
| author | Nikolai Kondrashov <Nikolai.Kondrashov@redhat.com> | 2020-09-09 13:10:39 +0300 |
|---|---|---|
| committer | Nikolai Kondrashov <Nikolai.Kondrashov@redhat.com> | 2020-09-09 13:45:13 +0300 |
| commit | 52564dd2ba555b26048f54a1f3e9708fedefbb42 (patch) | |
| tree | e2e5fb3db0bdcadb3145944d7ffb4a3af22672a0 | |
| parent | 08dfaba73d51636f194eed716cfe4b5dde2b57ff (diff) | |
Add tests for data preservation
Add tests verifying various value types and combinations are preserved
after passing through the program.
| -rw-r--r-- | tests/jq_tests.py | 103 |
1 files changed, 102 insertions, 1 deletions
diff --git a/tests/jq_tests.py b/tests/jq_tests.py index 27734e6..6b63556 100644 --- a/tests/jq_tests.py +++ b/tests/jq_tests.py @@ -2,7 +2,7 @@ from __future__ import unicode_literals -from nose.tools import istest, assert_equal, assert_raises +from nose.tools import istest, assert_equal, assert_is, assert_raises import jq @@ -198,6 +198,107 @@ def program_string_can_be_retrieved_from_program(): @istest +def program_preserves_null(): + program = jq.compile(".") + assert_is(None, program.input(text='null').first()) + + +@istest +def program_preserves_bools(): + program = jq.compile(".") + assert_is(False, program.input(text="false").first()) + assert_is(True, program.input(text="true").first()) + + +@istest +def program_preserves_ints(): + program = jq.compile(".") + assert_equal(int, type(program.input(text="0").first())) + assert_equal(0, program.input(text="0").first()) + assert_equal(1, program.input(text="1").first()) + assert_equal(-1, program.input(text="-1").first()) + assert_equal(12345, program.input(text="12345").first()) + assert_equal(-12345, program.input(text="-12345").first()) + + +@istest +def program_preserves_floats(): + program = jq.compile(".") + assert_equal(float, type(program.input(text="1.1").first())) + assert_equal(3.14159, program.input(text="3.14159").first()) + assert_equal(-3.14159, program.input(text="-3.14159").first()) + assert_equal(42E100, program.input(text="42E100").first()) + assert_equal(-42E100, program.input(text="-42E100").first()) + + +@istest +def program_preserves_strings(): + program = jq.compile(".") + assert_equal(type(""), type(program.input(text='""').first())) + assert_equal("", program.input(text='""').first()) + assert_equal("x", program.input(text='"x"').first()) + assert_equal("xyz", program.input(text='"xyz"').first()) + + +@istest +def program_preserves_arrays(): + program = jq.compile(".") + + assert_equal(list, type(program.input(text='[]').first())) + + assert_equal([], program.input(text='[]').first()) + + assert_equal([1], program.input(text='[1]').first()) + assert_equal([1, 2], program.input(text='[1, 2]').first()) + + assert_equal([3.14159], program.input(text='[3.14159]').first()) + assert_equal([3.14159, 95141.3], program.input(text='[3.14159, 95141.3]').first()) + + assert_equal([False], program.input(text='[false]').first()) + assert_equal([False, True], program.input(text='[false, true]').first()) + + assert_equal([[]], program.input(text='[[]]').first()) + assert_equal([[[]]], program.input(text='[[[]]]').first()) + assert_equal([[], []], program.input(text='[[], []]').first()) + assert_equal([[[], []], [[], []]], program.input(text='[[[], []], [[], []]]').first()) + + assert_equal([{}], program.input(text='[{}]').first()) + assert_equal([{"": []}], program.input(text='[{"": []}]').first()) + assert_equal([{"1": [], "2": []}], program.input(text='[{"1": [], "2": []}]').first()) + + +@istest +def program_preserves_objects(): + program = jq.compile(".") + + assert_equal(dict, type(program.input(text='{}').first())) + + assert_equal({}, program.input(text='{}').first()) + + assert_equal({"": True}, program.input(text='{"": true}').first()) + assert_equal({"": False}, program.input(text='{"": false}').first()) + + assert_equal({"": 0}, program.input(text='{"": 0}').first()) + assert_equal({"": 1}, program.input(text='{"": 1}').first()) + assert_equal({"a": 0, "b": 1}, program.input(text='{"a": 0, "b": 1}').first()) + assert_equal({"": 3.14159}, program.input(text='{"": 3.14159}').first()) + assert_equal({"a": 3.14159, "b": 95141.3}, + program.input(text='{"a": 3.14159, "b": 95141.3}').first()) + + assert_equal({"": ""}, program.input(text='{"": ""}').first()) + assert_equal({"": "x"}, program.input(text='{"": "x"}').first()) + + assert_equal({"": []}, program.input(text='{"": []}').first()) + assert_equal({"": [{}]}, program.input(text='{"": [{}]}').first()) + assert_equal({"a": [1], "b": [2]}, + program.input(text='{"a": [1], "b": [2]}').first()) + + assert_equal({"": {}}, program.input(text='{"": {}}').first()) + assert_equal({"a": {}, "b": {}}, program.input(text='{"a": {}, "b": {}}').first()) + assert_equal({"": {"": {}}}, program.input(text='{"": {"": {}}}').first()) + + +@istest class ConvenienceFunctions(object): @istest def first_function_with_json_value_input_returns_first_output_element(self): |
