summaryrefslogtreecommitdiffstats
path: root/test.vala
diff options
context:
space:
mode:
authorSebastian Reichel <sre@ring0.de>2011-12-12 00:11:34 +0100
committerSebastian Reichel <sre@ring0.de>2011-12-12 00:11:34 +0100
commit90c9a148a94ed92c93d42110e45d8787f7ac1eff (patch)
tree447e0ec7bfa5c60a87468851c2fff741d6e645f2 /test.vala
downloadlp5523-assembler-90c9a148a94ed92c93d42110e45d8787f7ac1eff.tar.bz2
initial import
Diffstat (limited to 'test.vala')
-rw-r--r--test.vala141
1 files changed, 141 insertions, 0 deletions
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 <sre@ring0.de>
+ *
+ * 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();
+}