first commit
This commit is contained in:
94
tests/test_utils.py
Normal file
94
tests/test_utils.py
Normal file
@@ -0,0 +1,94 @@
|
||||
"""
|
||||
测试 utils 模块
|
||||
"""
|
||||
|
||||
import unittest
|
||||
import sys
|
||||
import os
|
||||
|
||||
# 添加父目录到路径
|
||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||
|
||||
from utils import (
|
||||
parse_key_value_output, parse_table_output, extract_with_regex,
|
||||
safe_int, safe_float, format_bytes, sanitize_filename,
|
||||
merge_dicts, check_command_exists
|
||||
)
|
||||
|
||||
|
||||
class TestParseFunctions(unittest.TestCase):
|
||||
"""测试解析函数"""
|
||||
|
||||
def test_parse_key_value_output(self):
|
||||
text = """
|
||||
Key1: Value1
|
||||
Key2: Value2
|
||||
# Comment line
|
||||
Key3: Value with: colon
|
||||
"""
|
||||
result = parse_key_value_output(text)
|
||||
self.assertEqual(result["Key1"], "Value1")
|
||||
self.assertEqual(result["Key2"], "Value2")
|
||||
self.assertEqual(result["Key3"], "Value with: colon")
|
||||
|
||||
def test_parse_table_output(self):
|
||||
text = """
|
||||
NAME SIZE TYPE MODEL
|
||||
sda 1T disk Samsung SSD
|
||||
sdb 2T disk WD HDD
|
||||
"""
|
||||
result = parse_table_output(text, headers=["NAME", "SIZE", "TYPE", "MODEL"])
|
||||
self.assertEqual(len(result), 2)
|
||||
self.assertEqual(result[0]["NAME"], "sda")
|
||||
self.assertEqual(result[1]["TYPE"], "disk")
|
||||
|
||||
def test_extract_with_regex(self):
|
||||
text = "Temperature: 45.5 degrees"
|
||||
result = extract_with_regex(text, r'Temperature:\s*([\d.]+)')
|
||||
self.assertEqual(result, "45.5")
|
||||
|
||||
def test_safe_int(self):
|
||||
self.assertEqual(safe_int("123"), 123)
|
||||
self.assertEqual(safe_int("123.5"), 123)
|
||||
self.assertEqual(safe_int("1,234"), 1234)
|
||||
self.assertEqual(safe_int("32 GB"), 32)
|
||||
self.assertEqual(safe_int("invalid"), 0)
|
||||
self.assertEqual(safe_int("invalid", -1), -1)
|
||||
|
||||
def test_safe_float(self):
|
||||
self.assertEqual(safe_float("123.5"), 123.5)
|
||||
self.assertEqual(safe_float("2.5GHz"), 2.5)
|
||||
self.assertEqual(safe_float("invalid"), 0.0)
|
||||
|
||||
def test_format_bytes(self):
|
||||
self.assertEqual(format_bytes(0), "0 B")
|
||||
self.assertEqual(format_bytes(1024), "1.00 KB")
|
||||
self.assertEqual(format_bytes(1024**2), "1.00 MB")
|
||||
self.assertEqual(format_bytes(1024**3), "1.00 GB")
|
||||
|
||||
def test_sanitize_filename(self):
|
||||
self.assertEqual(sanitize_filename("file<name>.txt"), "file_name_.txt")
|
||||
self.assertEqual(sanitize_filename("path/to/file"), "path/to/file")
|
||||
|
||||
def test_merge_dicts(self):
|
||||
base = {"a": 1, "b": {"c": 2}}
|
||||
update = {"b": {"d": 3}, "e": 4}
|
||||
result = merge_dicts(base, update)
|
||||
self.assertEqual(result["a"], 1)
|
||||
self.assertEqual(result["b"]["c"], 2)
|
||||
self.assertEqual(result["b"]["d"], 3)
|
||||
self.assertEqual(result["e"], 4)
|
||||
|
||||
|
||||
class TestCommandFunctions(unittest.TestCase):
|
||||
"""测试命令相关函数"""
|
||||
|
||||
def test_check_command_exists(self):
|
||||
# ls 应该存在
|
||||
self.assertTrue(check_command_exists("ls"))
|
||||
# 不存在的命令
|
||||
self.assertFalse(check_command_exists("nonexistent_command_12345"))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user