Skip to content

Commit d6622b5

Browse files
authored
Add tests of toplevel metadata keyed with float (#1346)
1 parent 0b94eed commit d6622b5

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

tests/test_tskit_metadata.py

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@
2020
import demes
2121
import fwdpy11
2222
import pytest
23+
import tskit
24+
25+
from dataclasses import dataclass
2326

2427

2528
@pytest.fixture
@@ -117,3 +120,64 @@ def test_seed(pop):
117120

118121
with pytest.raises(ValueError):
119122
_ = pop.dump_tables_to_tskit(seed=-333)
123+
124+
125+
def test_toplevel_metadata_0():
126+
tc = tskit.TableCollection(10.0)
127+
tc.metadata_schema = fwdpy11.tskit_tools.metadata_schema.TopLevelMetadata
128+
md = {"generation": 100, "data": {0.0: [0, 1, 2]}}
129+
tc.metadata = md
130+
data = tc.metadata["data"]
131+
assert 0.0 not in data
132+
assert "0.0" in data
133+
134+
135+
def test_toplevel_metadata_1():
136+
# Same as previous test, but w/no schema
137+
# and we just shove raw bytes in there
138+
tc = tskit.TableCollection(10.0)
139+
md = {"generation": 100, "data": {0.0: [0, 1, 2]}}
140+
tc.metadata = str(md).encode()
141+
decoded = eval(tc.metadata)
142+
data = decoded["data"]
143+
assert 0.0 in data
144+
145+
146+
def test_toplevel_metadata_2():
147+
# This time w/a JSON codec
148+
tc = tskit.TableCollection(10.0)
149+
schema = tskit.metadata.MetadataSchema(
150+
{
151+
"codec": "json",
152+
}
153+
)
154+
tc.metadata_schema = schema
155+
md = {"generation": 100, "data": {0.0: [0, 1, 2]}}
156+
157+
tc.metadata = md
158+
decoded = tc.metadata
159+
data = decoded["data"]
160+
assert 0.0 not in data
161+
assert "0.0" in data
162+
163+
164+
@dataclass(eq=True, frozen=True)
165+
class FloatWrap:
166+
value: float
167+
168+
169+
def test_toplevel_metadata_3():
170+
171+
# This time w/a JSON codec
172+
tc = tskit.TableCollection(10.0)
173+
schema = tskit.metadata.MetadataSchema(
174+
{
175+
"codec": "json",
176+
}
177+
)
178+
tc.metadata_schema = schema
179+
md = {"data": {FloatWrap(0.0): [0, 1, 2]}}
180+
tc.metadata = str(md)
181+
decoded = eval(tc.metadata)
182+
data = decoded["data"]
183+
assert FloatWrap(0.0) in data

0 commit comments

Comments
 (0)