mirror of
https://github.com/xonsh/xonsh.git
synced 2025-03-04 16:34:47 +01:00

I wouldn't normally do something like this but issue #487 brought to my attention the fact that too many of the python modules don't have an encoding comment and of those that do there is a lot of pointless inconsistency in the style of the comment.
184 lines
4.6 KiB
Python
184 lines
4.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""Tests lazy json functionality."""
|
|
from __future__ import unicode_literals, print_function
|
|
from io import StringIO
|
|
|
|
import nose
|
|
from nose.tools import assert_equal, assert_is_instance
|
|
assert_equal.__self__.maxDiff = None
|
|
|
|
from xonsh.lazyjson import index, dump, LazyJSON, Node
|
|
|
|
def test_index_int():
|
|
exp = {'offsets': 0, 'sizes': 2}
|
|
s, obs = index(42)
|
|
assert_equal(exp, obs)
|
|
|
|
def test_index_str():
|
|
exp = {'offsets': 0, 'sizes': 7}
|
|
s, obs = index('wakka')
|
|
assert_equal(exp, obs)
|
|
|
|
def test_index_list_ints():
|
|
exp = {'offsets': [1, 4, 0], 'sizes': [1, 2, 8]}
|
|
s, obs = index([1, 42])
|
|
assert_equal(exp, obs)
|
|
|
|
def test_index_list_str():
|
|
exp = {'offsets': [1, 10, 0], 'sizes': [7, 8, 20]}
|
|
s, obs = index(['wakka', 'jawaka'])
|
|
assert_equal(exp, obs)
|
|
|
|
def test_index_list_str_int():
|
|
exp = {'offsets': [1, 10, 0], 'sizes': [7, 2, 14]}
|
|
s, obs = index(['wakka', 42])
|
|
assert_equal(exp, obs)
|
|
|
|
def test_index_list_int_str():
|
|
exp = {'offsets': [1, 5, 14, 0], 'sizes': [2, 7, 8, 24]}
|
|
s, obs = index([42, 'wakka', 'jawaka'])
|
|
assert_equal(exp, obs)
|
|
|
|
def test_index_dict_int():
|
|
exp = {'offsets': {'wakka': 10, '__total__': 0},
|
|
'sizes': {'wakka': 2, '__total__': 14}}
|
|
s, obs = index({'wakka': 42})
|
|
assert_equal(exp, obs)
|
|
|
|
def test_index_dict_str():
|
|
exp = {'offsets': {'wakka': 10, '__total__': 0},
|
|
'sizes': {'wakka': 8, '__total__': 20}}
|
|
s, obs = index({'wakka': 'jawaka'})
|
|
assert_equal(exp, obs)
|
|
|
|
def test_index_dict_dict_int():
|
|
exp = {'offsets': {'wakka': {'jawaka': 21, '__total__': 10},
|
|
'__total__': 0,
|
|
},
|
|
'sizes': {'wakka': {'jawaka': 2, '__total__': 15},
|
|
'__total__': 27}
|
|
}
|
|
s, obs = index({'wakka': {'jawaka': 42}})
|
|
assert_equal(exp, obs)
|
|
|
|
def test_lazy_load_index():
|
|
f = StringIO()
|
|
dump({'wakka': 42}, f)
|
|
f.seek(0)
|
|
lj = LazyJSON(f)
|
|
assert_equal({'wakka': 10, '__total__': 0}, lj.offsets)
|
|
assert_equal({'wakka': 2, '__total__': 14}, lj.sizes)
|
|
|
|
def test_lazy_int():
|
|
f = StringIO()
|
|
dump(42, f)
|
|
f.seek(0)
|
|
lj = LazyJSON(f)
|
|
assert_equal(42, lj.load())
|
|
|
|
def test_lazy_str():
|
|
f = StringIO()
|
|
dump('wakka', f)
|
|
f.seek(0)
|
|
lj = LazyJSON(f)
|
|
assert_equal('wakka', lj.load())
|
|
|
|
def test_lazy_list_empty():
|
|
x = []
|
|
f = StringIO()
|
|
dump(x, f)
|
|
f.seek(0)
|
|
lj = LazyJSON(f)
|
|
assert_equal(0, len(lj))
|
|
assert_equal(x, lj.load())
|
|
|
|
def test_lazy_list_ints():
|
|
x = [0, 1, 6, 28, 496, 8128]
|
|
f = StringIO()
|
|
dump(x, f)
|
|
f.seek(0)
|
|
lj = LazyJSON(f)
|
|
assert_equal(28, lj[3])
|
|
assert_equal(x[:2:-2], lj[:2:-2])
|
|
assert_equal(x, [_ for _ in lj])
|
|
assert_equal(x, lj.load())
|
|
|
|
def test_lazy_list_ints():
|
|
x = [0, 1, 6, 28, 496, 8128]
|
|
f = StringIO()
|
|
dump(x, f)
|
|
f.seek(0)
|
|
lj = LazyJSON(f)
|
|
assert_equal(28, lj[3])
|
|
assert_equal(x[:2:-2], lj[:2:-2])
|
|
assert_equal(x, [_ for _ in lj])
|
|
assert_equal(x, lj.load())
|
|
|
|
def test_lazy_list_str():
|
|
x = ['I', 'have', 'seen', 'the', 'wind', 'blow']
|
|
f = StringIO()
|
|
dump(x, f)
|
|
f.seek(0)
|
|
lj = LazyJSON(f)
|
|
assert_equal('the', lj[3])
|
|
assert_equal(x[:2:-2], lj[:2:-2])
|
|
assert_equal(x, [_ for _ in lj])
|
|
assert_equal(x, lj.load())
|
|
|
|
def test_lazy_list_ints():
|
|
x = [0, 1, 6, 28, 496, 8128]
|
|
f = StringIO()
|
|
dump(x, f)
|
|
f.seek(0)
|
|
lj = LazyJSON(f)
|
|
assert_equal(28, lj[3])
|
|
assert_equal(x[:2:-2], lj[:2:-2])
|
|
assert_equal(x, [_ for _ in lj])
|
|
assert_equal(x, lj.load())
|
|
|
|
def test_lazy_list_list_ints():
|
|
x = [[0, 1], [6, 28], [496, 8128]]
|
|
f = StringIO()
|
|
dump(x, f)
|
|
f.seek(0)
|
|
lj = LazyJSON(f)
|
|
assert_is_instance(lj[1], Node)
|
|
assert_equal(28, lj[1][1])
|
|
assert_equal([6, 28], lj[1].load())
|
|
assert_equal(x, lj.load())
|
|
|
|
def test_lazy_dict_empty():
|
|
x = {}
|
|
f = StringIO()
|
|
dump(x, f)
|
|
f.seek(0)
|
|
lj = LazyJSON(f)
|
|
assert_equal(0, len(lj))
|
|
assert_equal(x, lj.load())
|
|
|
|
def test_lazy_dict():
|
|
f = StringIO()
|
|
dump({'wakka': 42}, f)
|
|
f.seek(0)
|
|
lj = LazyJSON(f)
|
|
assert_equal(['wakka'], list(lj.keys()))
|
|
assert_equal(42, lj['wakka'])
|
|
assert_equal(1, len(lj))
|
|
assert_equal({'wakka': 42}, lj.load())
|
|
|
|
def test_lazy_dict_dict_int():
|
|
x = {'wakka': {'jawaka': 42}}
|
|
f = StringIO()
|
|
dump(x, f)
|
|
f.seek(0)
|
|
lj = LazyJSON(f)
|
|
assert_equal(['wakka'], list(lj.keys()))
|
|
assert_is_instance(lj['wakka'], Node)
|
|
assert_equal(42, lj['wakka']['jawaka'])
|
|
assert_equal(1, len(lj))
|
|
assert_equal(x, lj.load())
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
nose.runmodule()
|