Files
pytchat-fork/tests/test_calculator_parse.py
taizan-hokouto 139dc7fce2 Fix tests
2020-12-05 14:44:25 +09:00

73 lines
1.9 KiB
Python

import json
from pytchat.parser.live import Parser
from pytchat.processors.superchat.calculator import SuperchatCalculator
from pytchat.exceptions import ChatParseException
parse = SuperchatCalculator()._parse
def _open_file(path):
with open(path, mode='r', encoding='utf-8') as f:
return f.read()
def load_chatdata(filepath):
parser = Parser(is_replay=True)
# print(json.loads(_open_file(filepath)))
contents = parser.get_contents(json.loads(_open_file(filepath)))[0]
return parser.parse(contents)[1]
def test_parse_1():
renderer = {"purchaseAmountText": {"simpleText": "¥2,000"}}
symbol, amount = parse(renderer)
assert symbol == ''
assert amount == 2000.0
def test_parse_2():
renderer = {"purchaseAmountText": {"simpleText": "ABC\x0a200"}}
symbol, amount = parse(renderer)
assert symbol == 'ABC\x0a'
assert amount == 200.0
def test_process_0():
"""
parse superchat data
"""
chat_component = {
'video_id': '',
'timeout': 10,
'chatdata': load_chatdata(r"tests/testdata/calculator/superchat_0.json")
}
assert SuperchatCalculator().process([chat_component]) == {
'': 6800.0, '': 2.0}
def test_process_1():
"""
parse no superchat data
"""
chat_component = {
'video_id': '',
'timeout': 10,
'chatdata': load_chatdata(r"tests/testdata/calculator/text_only.json")
}
assert SuperchatCalculator().process([chat_component]) == {}
def test_process_2():
"""
try to parse after replay end
"""
try:
chat_component = {
'video_id': '',
'timeout': 10,
'chatdata': load_chatdata(r"tests/testdata/calculator/replay_end.json")
}
assert False
SuperchatCalculator().process([chat_component])
except ChatParseException:
assert True