t-suw****@users*****
t-suw****@users*****
2007年 8月 26日 (日) 01:34:45 JST
Index: AquaSKK/src/test/Makefile
diff -u /dev/null AquaSKK/src/test/Makefile:1.1.2.1
--- /dev/null Sun Aug 26 01:34:45 2007
+++ AquaSKK/src/test/Makefile Sun Aug 26 01:34:45 2007
@@ -0,0 +1,35 @@
+###
+### unit test
+###
+
+VPATH = $(shell find .. -type d -a ! -name CVS -a ! -name test -a ! -name ..) ../..
+CXXFLAGS= -g $(foreach dir,$(VPATH),-I$(dir))
+
+TARGET = SKKKeymapEntry_TEST SKKKeymap_TEST
+
+define BUILD_template
+$(1): $(1).o
+ $(CXX) -o $(1) $(1).o
+endef
+
+all: build
+
+$(foreach prog,$(TARGET),$(eval $(call BUILD_template,$(prog))))
+
+build: $(TARGET)
+
+###
+### rule
+###
+clean:
+ $(RM) $(TARGET) *.o
+
+test: build
+ for i in $(TARGET); do ./$$i; done
+
+###
+### dependencies
+###
+
+SKKKeymapEntry_TEST.o: SKKKeymapEntry_TEST.cpp SKKKeymapEntry.cpp SKKKeymapEntry.h
+SKKKeymap_TEST.o: SKKKeymap_TEST.cpp SKKKeymapEntry.cpp SKKKeymapEntry.h SKKKeymap.cpp SKKKeymap.h
Index: AquaSKK/src/test/SKKKeymapEntry_TEST.cpp
diff -u /dev/null AquaSKK/src/test/SKKKeymapEntry_TEST.cpp:1.1.2.1
--- /dev/null Sun Aug 26 01:34:45 2007
+++ AquaSKK/src/test/SKKKeymapEntry_TEST.cpp Sun Aug 26 01:34:45 2007
@@ -0,0 +1,43 @@
+#include "SKKKeyState.h"
+#include "SKKKeymapEntry.cpp"
+#include <iostream>
+
+int main() {
+ SKKKeymapEntry entry;
+ int key;
+
+ entry = SKKKeymapEntry("Unknown", "a");
+ assert(!(entry >> key));
+
+ entry = SKKKeymapEntry("SKK_JMODE", "a");
+ entry >> key;
+ assert(key == SKKKeyState::Ascii('a', false));
+ assert(entry.Symbol() == SKK_JMODE);
+ assert(!(entry >> key));
+
+ entry = SKKKeymapEntry("SKK_JMODE", "keycode::0x0a");
+ entry >> key;
+ assert(key == SKKKeyState::Keycode(0x0a, false));
+
+ entry = SKKKeymapEntry("SKK_ENTER", "hex::0x03");
+ entry >> key;
+ assert(key == SKKKeyState::Ascii(0x03, false));
+
+ entry = SKKKeymapEntry("SKK_ENTER", "ctrl::m");
+ entry >> key;
+ assert(key == SKKKeyState::Ascii('m', true));
+
+ entry = SKKKeymapEntry("Direct", "group::a,c,d-f");
+ assert(!entry.IsEvent());
+ assert(entry.Symbol() == Direct);
+ entry >> key;
+ assert(key == SKKKeyState::Ascii('a', false));
+ entry >> key;
+ assert(key == SKKKeyState::Ascii('c', false));
+ entry >> key;
+ assert(key == SKKKeyState::Ascii('d', false));
+ entry >> key;
+ assert(key == SKKKeyState::Ascii('e', false));
+ entry >> key;
+ assert(key == SKKKeyState::Ascii('f', false));
+}
Index: AquaSKK/src/test/SKKKeymap_TEST.cpp
diff -u /dev/null AquaSKK/src/test/SKKKeymap_TEST.cpp:1.1.2.1
--- /dev/null Sun Aug 26 01:34:45 2007
+++ AquaSKK/src/test/SKKKeymap_TEST.cpp Sun Aug 26 01:34:45 2007
@@ -0,0 +1,37 @@
+#include <iostream>
+#include "SKKKeymap.cpp"
+#include "SKKKeymapEntry.cpp"
+
+int main() {
+ SKKKeymap keymap;
+ SKKEventParam param;
+
+ keymap.Initialize("../keybindings/keymap.conf");
+
+ assert(keymap.Fetch(0, 0, 0) == SKKEventParam(SKK_CHAR, 0, 0));
+ assert(keymap.Fetch('j', 0, true) == SKKEventParam(SKK_JMODE, 'j', 0));
+ assert(keymap.Fetch(0x03, 0, 0) == SKKEventParam(SKK_ENTER, 0x03, 0));
+ assert(keymap.Fetch(0x09, 0, 0) == SKKEventParam(SKK_TAB, 0x09, 0));
+ assert(keymap.Fetch('i', 0, true) == SKKEventParam(SKK_TAB, 'i', 0));
+ assert(keymap.Fetch('g', 0, true) == SKKEventParam(SKK_CANCEL, 'g', 0));
+ assert(keymap.Fetch(0x1c, 0, 0) == SKKEventParam(SKK_LEFT, 0x1c, 0));
+
+ param = keymap.Fetch('b', 0, 0);
+ assert(param == SKKEventParam(SKK_CHAR, 'b', None));
+
+ param = keymap.Fetch('q', 0, 0);
+ assert(param == SKKEventParam(SKK_CHAR, 'q', ToggleKana));
+
+ param = keymap.Fetch('q', 0, true);
+ assert(param == SKKEventParam(SKK_CHAR, 'q', ToggleJisx0201Kana));
+
+ param = keymap.Fetch('A', 0, 0);
+ assert(param == SKKEventParam(SKK_CHAR, 'A', UpperCases));
+
+ param = keymap.Fetch('1', 0x51, 0);
+ assert(param == SKKEventParam(SKK_CHAR, '1', Direct));
+
+ param = keymap.Fetch('f', 0, true);
+ assert(param == SKKEventParam(SKK_RIGHT, 'f', 0));
+ std::cerr << param.dump() << std::endl;
+}