apertus-dialekt-konsil / test_roundtable.py
Markus Clauss DIRU Vetsuisse
Fix roundtable format to match Consilium component structure
35a980a
#!/usr/bin/env python3
"""
Test the consilium_roundtable component
"""
import gradio as gr
import json
from gradio_consilium_roundtable import consilium_roundtable
def test_roundtable():
"""Test the roundtable with different avatar formats"""
with gr.Blocks() as demo:
gr.Markdown("# Testing Consilium Roundtable Component")
# Test 1: Emoji avatars
test_state_emoji = {
"participants": [
{"name": "Ueli", "avatar": "🇨🇭", "message": "Hallo!", "is_thinking": False, "is_current_speaker": True},
{"name": "Sepp", "avatar": "🥨", "message": "Servus!", "is_thinking": False, "is_current_speaker": False},
{"name": "Karl", "avatar": "🏰", "message": "Grüß Gott!", "is_thinking": False, "is_current_speaker": False},
],
"current_speaker": "Ueli",
"round": 1
}
# Test 2: No avatars
test_state_no_avatar = {
"participants": [
{"name": "Ueli", "message": "Hallo!", "is_thinking": False, "is_current_speaker": True},
{"name": "Sepp", "message": "Servus!", "is_thinking": False, "is_current_speaker": False},
{"name": "Karl", "message": "Grüß Gott!", "is_thinking": False, "is_current_speaker": False},
],
"current_speaker": "Ueli",
"round": 1
}
# Test 3: URL avatars
test_state_url = {
"participants": [
{"name": "Ueli", "avatar": "https://via.placeholder.com/50", "message": "Hallo!", "is_thinking": False, "is_current_speaker": True},
{"name": "Sepp", "avatar": "https://via.placeholder.com/50", "message": "Servus!", "is_thinking": False, "is_current_speaker": False},
],
"current_speaker": "Ueli",
"round": 1
}
gr.Markdown("## Test 1: Emoji Avatars")
rt1 = consilium_roundtable(
value=json.dumps(test_state_emoji),
label="Emoji Avatars"
)
gr.Markdown("## Test 2: No Avatars")
rt2 = consilium_roundtable(
value=json.dumps(test_state_no_avatar),
label="No Avatars"
)
gr.Markdown("## Test 3: URL Avatars")
rt3 = consilium_roundtable(
value=json.dumps(test_state_url),
label="URL Avatars"
)
# Button to update state
update_btn = gr.Button("Update States")
def update_all():
new_state = {
"participants": [
{"name": "Test1", "avatar": "🎯", "message": "Updated!", "is_thinking": True, "is_current_speaker": False},
{"name": "Test2", "avatar": "🎨", "message": "Changed!", "is_thinking": False, "is_current_speaker": True},
],
"current_speaker": "Test2",
"round": 2
}
return json.dumps(new_state), json.dumps(new_state), json.dumps(new_state)
update_btn.click(
update_all,
outputs=[rt1, rt2, rt3]
)
return demo
if __name__ == "__main__":
print("Testing consilium_roundtable component...")
demo = test_roundtable()
demo.launch()