调整版本并做测试
This commit is contained in:
64
test_null_coalescing.py
Normal file
64
test_null_coalescing.py
Normal file
@@ -0,0 +1,64 @@
|
||||
#!/usr/bin/env python3.9
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Test null coalescing operator ?? functionality
|
||||
"""
|
||||
|
||||
from pyenjoy.template.Engine import Engine
|
||||
from pyenjoy.kit.Kv import Kv
|
||||
|
||||
def test_null_coalescing():
|
||||
"""Test null coalescing operator"""
|
||||
print("Testing null coalescing operator...")
|
||||
|
||||
engine = Engine.use()
|
||||
|
||||
# Test cases
|
||||
test_cases = [
|
||||
# Template, data, expected result
|
||||
("#(data??'未知')", {"data": None}, "未知"),
|
||||
("#(data??'未知')", {"data": "测试"}, "测试"),
|
||||
("#(data??'未知')", {}, "未知"),
|
||||
("#(user.name??'匿名')", {"user": {"name": "张三"}}, "张三"),
|
||||
("#(user.name??'匿名')", {"user": {}}, "匿名"),
|
||||
("#(user.name??'匿名')", {}, "匿名"),
|
||||
# Nested null coalescing
|
||||
("#(data1??data2??'默认值')", {"data1": None, "data2": None}, "默认值"),
|
||||
("#(data1??data2??'默认值')", {"data1": None, "data2": "中间值"}, "中间值"),
|
||||
("#(data1??data2??'默认值')", {"data1": "第一个值", "data2": "中间值"}, "第一个值"),
|
||||
]
|
||||
|
||||
passed = 0
|
||||
failed = 0
|
||||
|
||||
for i, (template_str, data, expected) in enumerate(test_cases):
|
||||
try:
|
||||
template = engine.get_template_by_string(template_str)
|
||||
result = template.render_to_string(Kv(data))
|
||||
if result == expected:
|
||||
print(f"✓ Test {i+1}: Passed")
|
||||
print(f" Template: {template_str}")
|
||||
print(f" Data: {data}")
|
||||
print(f" Result: {result}")
|
||||
passed += 1
|
||||
else:
|
||||
print(f"✗ Test {i+1}: Failed")
|
||||
print(f" Template: {template_str}")
|
||||
print(f" Data: {data}")
|
||||
print(f" Expected: {expected}")
|
||||
print(f" Got: {result}")
|
||||
failed += 1
|
||||
except Exception as e:
|
||||
print(f"✗ Test {i+1}: Error")
|
||||
print(f" Template: {template_str}")
|
||||
print(f" Data: {data}")
|
||||
print(f" Error: {e}")
|
||||
failed += 1
|
||||
print()
|
||||
|
||||
print(f"Summary: {passed} passed, {failed} failed")
|
||||
return passed == len(test_cases)
|
||||
|
||||
if __name__ == "__main__":
|
||||
success = test_null_coalescing()
|
||||
exit(0 if success else 1)
|
||||
Reference in New Issue
Block a user