# SPDX-License-Identifier: LGPL-2.1-only # Copyright 2022 Jookia <contact@jookia.org> # The i18n module provides the following: # - A Message data structure # # The Message data structure contains: # - A string identifier # - A dictionary of string keys to arbitrary values from hypothesis.strategies import ( binary, composite, lists, text, ) from src.i18n import Message from tests.templates import template_test_structure # Draws a message identifier @composite def draw_message_identifier(draw): return draw(text()) # Draws a message key and value @composite def draw_message_keyvalue(draw): return (draw(text()), draw(binary())) # Draws a values for a message @composite def draw_message_values(draw): values = {} keyvalues = draw(lists(draw_message_keyvalue())) for (key, value) in keyvalues: values[key] = value return values # Draws a random message @composite def draw_message_random(draw): id = draw(draw_message_identifier()) values = draw(draw_message_values()) return Message(id, values) # Test message structure @template_test_structure( Message, draw_message_random(), id=draw_message_identifier(), values=draw_message_values(), ) def test_i18n_message_structure(): pass