From 90c9a148a94ed92c93d42110e45d8787f7ac1eff Mon Sep 17 00:00:00 2001 From: Sebastian Reichel Date: Mon, 12 Dec 2011 00:11:34 +0100 Subject: initial import --- test.vala | 141 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 test.vala (limited to 'test.vala') diff --git a/test.vala b/test.vala new file mode 100644 index 0000000..29fd902 --- /dev/null +++ b/test.vala @@ -0,0 +1,141 @@ +/* test.vala + * Copyright 2011, Sebastian Reichel + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +public class AssemblerTestSuite { + public static void add_simple_assembly_tests() { + /* start */ + Test.add_func("/lp5523/reassembly/restart", () => { + simple_assembly_test("restart", 0x0000); + }); + + Test.add_func("/lp5523/reassembly/start", () => { + simple_assembly_test("start", 0x9d80); + }); + + /* stop */ + Test.add_func("/lp5523/reassembly/stop", () => { + simple_assembly_test("stop", 0xc000); + }); + + Test.add_func("/lp5523/reassembly/stopi", () => { + simple_assembly_test("stopr", 0xc800); + }); + + Test.add_func("/lp5523/reassembly/stopr", () => { + simple_assembly_test("stopi", 0xd000); + }); + + Test.add_func("/lp5523/reassembly/stopri", () => { + simple_assembly_test("stopri", 0xd800); + }); + + /* signals */ + Test.add_func("/lp5523/reassembly/send1", () => { + simple_assembly_test("send1", 0xe002); + }); + + Test.add_func("/lp5523/reassembly/send2", () => { + simple_assembly_test("send2", 0xe004); + }); + + Test.add_func("/lp5523/reassembly/send3", () => { + simple_assembly_test("send3", 0xe008); + }); + + Test.add_func("/lp5523/reassembly/wait1", () => { + simple_assembly_test("wait1", 0xe080); + }); + + Test.add_func("/lp5523/reassembly/wait2", () => { + simple_assembly_test("wait2", 0xe100); + }); + + Test.add_func("/lp5523/reassembly/wait3", () => { + simple_assembly_test("wait3", 0xe200); + }); + + /* fading */ + Test.add_func("/lp5523/reassembly/fade 1 +255", () => { + simple_assembly_test("fade 1 +255", 0x04ff); + }); + + Test.add_func("/lp5523/reassembly/fade 0 -100", () => { + simple_assembly_test("fade 0 -100", 0x0364); + }); + + Test.add_func("/lp5523/reassembly/fade 61 -100", () => { + simple_assembly_test("fade 61 -100", 0x7f64); + }); + + Test.add_func("/lp5523/reassembly/fade 61 +100", () => { + simple_assembly_test("fade 61 +100", 0x7e64); + }); + + Test.add_func("/lp5523/reassembly/fade 0 +100", () => { + simple_assembly_test("fade 0 +100", 0x0264); + }); + + Test.add_func("/lp5523/reassembly/fade 1 -255", () => { + simple_assembly_test("fade 1 -255", 0x05ff); + }); + + /* sleeping */ + Test.add_func("/lp5523/reassembly/sleep 61", () => { + simple_assembly_test("sleep 61", 0x7f00); + }); + + /* instant brightness setting */ + Test.add_func("/lp5523/reassembly/set 255", () => { + simple_assembly_test("set 255", 0x40ff); + }); + + Test.add_func("/lp5523/reassembly/set 0", () => { + simple_assembly_test("set 0", 0x4000); + }); + + /* branching */ + Test.add_func("/lp5523/reassembly/branch 0 0", () => { + simple_assembly_test("branch 0 0", 0xa000); + }); + + Test.add_func("/lp5523/reassembly/branch 63 95", () => { + simple_assembly_test("branch 63 95", 0xbfdf); + }); + } + + public static void simple_assembly_test(string cmd, uint16 opcode) { + try { + uint16 assembled_opcode = lp5523.assemble(cmd); + string disassembled_cmd = lp5523.disassemble(opcode); + + if(assembled_opcode != opcode) { + error("\"%04hx\" != \"%04hx\"", opcode, assembled_opcode); + } + + if(disassembled_cmd != cmd) { + error("\"%s\" != \"%s\"", cmd, disassembled_cmd); + } + } catch(lp5523.ParsingError e) { + error("Received Parsing Error: %s", e.message); + } + } +} + +void main(string[] args) { + Test.init(ref args); + AssemblerTestSuite.add_simple_assembly_tests(); + Test.run(); +} -- cgit v1.2.3