dnd-rolltable/tests/test_tables.py

130 lines
2.5 KiB
Python
Raw Normal View History

2022-07-30 14:20:26 -07:00
from rolltable import tables
fixture_metadata = """
metadata:
headers:
- Header 1
- Header 2
- Header 3
die: 10
frequencies:
default:
Option 1: 0.3
Option 2: 0.5
Option 3: 0.2
nondefault:
Option 1: 0.0
Option 2: 0.1
Option 3: 0.9
"""
fixture_source = """
Option 1:
- choice 1: description 1
- choice 2: description 2
- choice 3: description 3
Option 2:
- choice 1: description 4
- choice 2: description 5
- choice 3: description 6
Option 3:
- choice 1: description 7
- choice 2: description 8
- choice 3: description 9
"""
fixture_one_choice = """
option 1:
- choice 1: description 1
"""
fixture_repeated_choices = """
option 1:
- choice 1: description 1
- choice 1: description 1
- choice 1: description 1
"""
fixture_no_descriptions = """
2022-07-31 15:03:19 -07:00
metadata:
headers:
- option
- choice
2022-07-30 14:20:26 -07:00
option 1:
- choice 1
"""
2022-07-30 20:44:16 -07:00
fixture_combined_A = """
A1:
- A choice 1
- A choice 2
- A choice 3
A2:
- A choice 4
- A choice 5
- A choice 6
A3:
- A choice 7
- A choice 8
- A choice 9
"""
fixture_combined_B = """
metadata:
headers:
- HeaderB
- HeaderB_Choice
B1:
- B choice 1
B2:
- B choice 2
B3:
- B choice 3
"""
def test_combined_tables():
2022-07-31 15:03:19 -07:00
combined = tables.RollTable([fixture_combined_A, fixture_combined_B], die=6)
assert str(combined)
2022-07-30 20:44:16 -07:00
2022-07-30 14:20:26 -07:00
def test_table_end_to_end():
2022-07-31 15:03:19 -07:00
assert str(tables.RollTable([fixture_source]))
2022-07-30 14:20:26 -07:00
def test_table_end_to_end_with_metadata():
2022-07-31 15:03:19 -07:00
assert str(tables.RollTable([fixture_metadata + fixture_source]))
2022-07-30 14:20:26 -07:00
def test_table_frequency():
2022-07-31 15:03:19 -07:00
t = tables.RollTable([fixture_metadata + fixture_source], frequency='nondefault')
assert t._data[0].frequencies['Option 1'] == 0.0
assert t._data[0].frequencies['Option 2'] == 0.1
assert t._data[0].frequencies['Option 3'] == 0.9
2022-07-30 14:20:26 -07:00
def test_one_option():
2022-07-31 15:03:19 -07:00
t = tables.RollTable([fixture_one_choice], die=1)
assert t._values == [['option 1', 'choice 1', 'description 1']]
2022-07-30 14:20:26 -07:00
def test_collapsed():
2022-07-31 15:03:19 -07:00
t = tables.RollTable([fixture_repeated_choices], die=6)
assert len(list(t.rows)) == 2 # (+1 for headers)
2022-07-30 14:20:26 -07:00
def test_not_collapsed():
2022-07-31 15:03:19 -07:00
t = tables.RollTable([fixture_repeated_choices], die=6)
assert len(list(t.expanded_rows)) == 7 # (+1 for headers)
2022-07-30 14:20:26 -07:00
def test_no_descriptions():
2022-07-31 15:03:19 -07:00
t = tables.RollTable([fixture_no_descriptions], die=1)
2022-07-30 14:20:26 -07:00
assert 'd1' in str(t)
assert 'option 1' in str(t)
2022-08-06 13:32:34 -07:00
def test_yaml():
t = tables.RollTable([fixture_metadata + fixture_source])
print(t.as_yaml)