/* 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(); }