1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
# coding: utf-8
"""
Testing copy and deepcopy, instigated by Issue 84 (Peter Amstutz)
"""
import copy
import pytest # type: ignore # NOQA
from roundtrip import dedent, round_trip_dump, round_trip_load # type: ignore
class TestDeepCopy:
def test_preserve_flow_style_simple(self) -> None:
x = dedent(
"""\
{foo: bar, baz: quux}
"""
)
data = round_trip_load(x)
data_copy = copy.deepcopy(data)
y = round_trip_dump(data_copy)
print('x [{}]'.format(x))
print('y [{}]'.format(y))
assert y == x
assert data.fa.flow_style() == data_copy.fa.flow_style()
def test_deepcopy_flow_style_nested_dict(self) -> None:
x = dedent(
"""\
a: {foo: bar, baz: quux}
"""
)
data = round_trip_load(x)
assert data['a'].fa.flow_style() is True
data_copy = copy.deepcopy(data)
assert data_copy['a'].fa.flow_style() is True
data_copy['a'].fa.set_block_style()
assert data['a'].fa.flow_style() != data_copy['a'].fa.flow_style()
assert data['a'].fa._flow_style is True
assert data_copy['a'].fa._flow_style is False
y = round_trip_dump(data_copy)
print('x [{}]'.format(x))
print('y [{}]'.format(y))
assert y == dedent(
"""\
a:
foo: bar
baz: quux
"""
)
def test_deepcopy_flow_style_nested_list(self) -> None:
x = dedent(
"""\
a: [1, 2, 3]
"""
)
data = round_trip_load(x)
assert data['a'].fa.flow_style() is True
data_copy = copy.deepcopy(data)
assert data_copy['a'].fa.flow_style() is True
data_copy['a'].fa.set_block_style()
assert data['a'].fa.flow_style() != data_copy['a'].fa.flow_style()
assert data['a'].fa._flow_style is True
assert data_copy['a'].fa._flow_style is False
y = round_trip_dump(data_copy)
print('x [{}]'.format(x))
print('y [{}]'.format(y))
assert y == dedent(
"""\
a:
- 1
- 2
- 3
"""
)
class TestCopy:
def test_copy_flow_style_nested_dict(self) -> None:
x = dedent(
"""\
a: {foo: bar, baz: quux}
"""
)
data = round_trip_load(x)
assert data['a'].fa.flow_style() is True
data_copy = copy.copy(data)
assert data_copy['a'].fa.flow_style() is True
data_copy['a'].fa.set_block_style()
assert data['a'].fa.flow_style() == data_copy['a'].fa.flow_style()
assert data['a'].fa._flow_style is False
assert data_copy['a'].fa._flow_style is False
y = round_trip_dump(data_copy)
z = round_trip_dump(data)
assert y == z
assert y == dedent(
"""\
a:
foo: bar
baz: quux
"""
)
def test_copy_flow_style_nested_list(self) -> None:
x = dedent(
"""\
a: [1, 2, 3]
"""
)
data = round_trip_load(x)
assert data['a'].fa.flow_style() is True
data_copy = copy.copy(data)
assert data_copy['a'].fa.flow_style() is True
data_copy['a'].fa.set_block_style()
assert data['a'].fa.flow_style() == data_copy['a'].fa.flow_style()
assert data['a'].fa._flow_style is False
assert data_copy['a'].fa._flow_style is False
y = round_trip_dump(data_copy)
print('x [{}]'.format(x))
print('y [{}]'.format(y))
assert y == dedent(
"""\
a:
- 1
- 2
- 3
"""
)
|