mirror of https://github.com/arendst/Tasmota.git
82 lines
2.8 KiB
Python
Executable File
82 lines
2.8 KiB
Python
Executable File
#!/usr/bin/python3
|
|
"""Unit tests for raw_to_pronto_code.py"""
|
|
from io import StringIO
|
|
import unittest
|
|
import raw_to_pronto_code as pronto
|
|
|
|
class TestRawToPronto(unittest.TestCase):
|
|
"""Unit tests for the methods in raw_to_pronto_code."""
|
|
|
|
def test_parse_and_report_at_38000(self):
|
|
"""Tests for the parse_and_report() function @ 38kHz."""
|
|
|
|
output = StringIO()
|
|
input_str = """
|
|
uint16_t rawData[7] = {
|
|
20100, 20472, 15092, 30704, 20102, 20472, 15086};"""
|
|
pronto.parse_and_report(input_str, 38000, 100000, True, False, False,
|
|
output)
|
|
self.assertEqual(
|
|
output.getvalue(),
|
|
"Pronto code = "
|
|
"'0000 006D 0004 0000 02fb 0309 023d 048e 02fb 0309 023d 0ed8'\n")
|
|
|
|
def test_parse_and_report_at_36000(self):
|
|
"""Tests for the parse_and_report() function @ 36kHz."""
|
|
|
|
output = StringIO()
|
|
input_str = """
|
|
uint16_t rawData[7] = {
|
|
20100, 20472, 15092, 30704, 20102, 20472, 15086};"""
|
|
pronto.parse_and_report(input_str, 36000, 100000, True, False, False,
|
|
output)
|
|
self.assertEqual(
|
|
output.getvalue(),
|
|
"Pronto code = "
|
|
"'0000 0073 0004 0000 02d3 02e0 021f 0451 02d3 02e0 021f 0e10'\n")
|
|
|
|
def test_parse_and_report_at_57600(self):
|
|
"""Tests for the parse_and_report() function @ 57.6kHz."""
|
|
|
|
output = StringIO()
|
|
input_str = """
|
|
uint16_t rawData[7] = {
|
|
20100, 20472, 15092, 30704, 20102, 20472, 15086};"""
|
|
pronto.parse_and_report(input_str, 57600, 100000, True, False, False,
|
|
output)
|
|
self.assertEqual(
|
|
output.getvalue(),
|
|
"Pronto code = "
|
|
"'0000 0047 0004 0000 0485 049b 0365 06e8 0485 049b 0364 1680'\n")
|
|
|
|
def test_using_repeat(self):
|
|
"""Tests for the parse_and_report() function @38kHz using repeat section."""
|
|
|
|
output = StringIO()
|
|
input_str = """
|
|
uint16_t rawData[7] = {
|
|
20100, 20472, 15092, 30704, 20102, 20472, 15086};"""
|
|
pronto.parse_and_report(input_str, 38000, 30000, False, False, False,
|
|
output)
|
|
self.assertEqual(
|
|
output.getvalue(),
|
|
"Pronto code = "
|
|
"'0000 006D 0000 0004 02fb 0309 023d 048e 02fb 0309 023d 0474'\n")
|
|
|
|
def test_generate_code_output(self):
|
|
"""Tests for the parse_and_report() function geneating code output."""
|
|
|
|
output = StringIO()
|
|
input_str = """
|
|
uint16_t rawData[7] = {
|
|
20100, 20472, 15092, 30704, 20102, 20472, 15086};"""
|
|
pronto.parse_and_report(input_str, 38000, 30000, True, True, False, output)
|
|
self.assertEqual(
|
|
output.getvalue(),
|
|
"uint16_t pronto[12] = {0x0000, 0x006D, 0x0004, 0x0000, 0x02fb, "
|
|
"0x0309, 0x023d, 0x048e, 0x02fb, 0x0309, 0x023d, 0x0474};\n")
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main(verbosity=2)
|