コード例 #1
0
ファイル: icontests.py プロジェクト: zangshayang1/Ascidia
 def test_allows_rest_of_arm_line(self):
     p = self.pclass()
     feed_input(p, 0, 2, "O\n")
     feed_input(p, 1, 0, "z-|-")
     p.test(main.CurrentChar(1, 4, "a", core.M_OCCUPIED))
     p.test(main.CurrentChar(1, 5, "q", core.M_OCCUPIED))
     p.test(main.CurrentChar(1, 6, "\n", core.M_OCCUPIED))
コード例 #2
0
ファイル: icontests.py プロジェクト: zangshayang1/Ascidia
 def do_render(self, row, col, char):
     p = self.pclass()
     p.test(main.CurrentChar(row, col, char, core.M_NONE))
     try:
         p.test(main.CurrentChar(row, col + 1, "b", core.M_NONE))
     except StopIteration:
         pass
     return p.render()
コード例 #3
0
ファイル: icontests.py プロジェクト: zangshayang1/Ascidia
 def test_expects_left_leg_forwardslash(self):
     p = self.pclass()
     feed_input(p, 0, 3, "O\n")
     feed_input(p, 1, 0, "  -|-\n")
     feed_input(p, 2, 0, "ab")
     with self.assertRaises(core.PatternRejected):
         p.test(main.CurrentChar(2, 2, "g", core.M_NONE))
コード例 #4
0
ファイル: icontests.py プロジェクト: zangshayang1/Ascidia
 def test_accepts_stick_man(self):
     p = self.pclass()
     feed_input(p, 0, 1, "O  \n")
     feed_input(p, 1, 0, "-|- \n")
     feed_input(p, 2, 0, "/ \\")
     with self.assertRaises(StopIteration):
         p.test(main.CurrentChar(2, 3, " ", core.M_NONE))
コード例 #5
0
ファイル: icontests.py プロジェクト: zangshayang1/Ascidia
 def test_expects_space_between_legs_unoccupied(self):
     p = self.pclass()
     feed_input(p, 0, 3, "O\n")
     feed_input(p, 1, 0, "  -|-\n")
     feed_input(p, 2, 0, "  /")
     with self.assertRaises(core.PatternRejected):
         p.test(main.CurrentChar(2, 3, " ", core.M_OCCUPIED))
コード例 #6
0
ファイル: icontests.py プロジェクト: zangshayang1/Ascidia
 def test_expects_right_leg_backslash_unoccupied(self):
     p = self.pclass()
     feed_input(p, 0, 3, "O\n")
     feed_input(p, 1, 0, "  -|-\n")
     feed_input(p, 2, 0, "  / ")
     with self.assertRaises(core.PatternRejected):
         p.test(main.CurrentChar(2, 4, "\\", core.M_OCCUPIED))
コード例 #7
0
ファイル: icontests.py プロジェクト: zangshayang1/Ascidia
 def do_render(self, x, y):
     p = self.pclass()
     feed_input(p, y, x, "O\n")
     feed_input(p, y + 1, x - 1, "-|-\n")
     feed_input(p, y + 2, x - 1, "/ \\")
     try:
         p.test(main.CurrentChar(y + 2, x + 2, " ", core.M_NONE))
     except StopIteration:
         pass
     return p.render()
コード例 #8
0
ファイル: icontests.py プロジェクト: zangshayang1/Ascidia
 def test_sets_correct_meta_flags(self):
     p = self.pclass()
     input = (
         (
             3,
             "O   \n",
         ),
         (
             0,
             "  -|-  \n",
         ),
         (
             0,
             "  / \\",
         ),
     )
     o = core.M_OCCUPIED
     n = core.M_NONE
     meta = (
         (
             o,
             n,
             n,
             n,
             n,
         ),
         (
             n,
             n,
             o,
             o,
             o,
             n,
             n,
             n,
         ),
         (
             n,
             n,
             o,
             o,
             o,
         ),
     )
     for j, (startcol, line) in enumerate(input):
         for i, char in enumerate(line):
             m = p.test(main.CurrentChar(j, startcol + i, char,
                                         core.M_NONE))
             self.assertEquals(meta[j][i], m)
コード例 #9
0
ファイル: icontests.py プロジェクト: zangshayang1/Ascidia
 def test_accepts_other_meta(self):
     p = self.pclass()
     p.test(main.CurrentChar(2, 3, "a", core.M_BOX_START_E))
コード例 #10
0
ファイル: icontests.py プロジェクト: zangshayang1/Ascidia
 def test_rejects_if_occupied(self):
     p = self.pclass()
     with self.assertRaises(core.PatternRejected):
         p.test(main.CurrentChar(2, 2, "a", core.M_OCCUPIED))
コード例 #11
0
ファイル: icontests.py プロジェクト: zangshayang1/Ascidia
 def test_rejects_if_whitespace(self):
     p = self.pclass()
     with self.assertRaises(core.PatternRejected):
         p.test(main.CurrentChar(2, 2, " ", core.M_NONE))
コード例 #12
0
ファイル: icontests.py プロジェクト: zangshayang1/Ascidia
 def test_accepts_only_single_non_whitespace(self):
     p = self.pclass()
     p.test(main.CurrentChar(3, 2, "a", core.M_NONE))
     with self.assertRaises(StopIteration):
         p.test(main.CurrentChar(3, 3, "a", core.M_NONE))
コード例 #13
0
ファイル: icontests.py プロジェクト: zangshayang1/Ascidia
 def test_expects_left_arm_hyphen(self):
     p = self.pclass()
     feed_input(p, 0, 2, "O\n")
     feed_input(p, 1, 0, "z")
     with self.assertRaises(core.PatternRejected):
         p.test(main.CurrentChar(1, 1, "?", core.M_NONE))
コード例 #14
0
ファイル: icontests.py プロジェクト: zangshayang1/Ascidia
 def test_expects_head(self):
     p = self.pclass()
     with self.assertRaises(core.PatternRejected):
         p.test(main.CurrentChar(0, 1, " ", core.M_NONE))
コード例 #15
0
ファイル: icontests.py プロジェクト: zangshayang1/Ascidia
 def test_expects_head_unoccupied(self):
     p = self.pclass()
     with self.assertRaises(core.PatternRejected):
         p.test(main.CurrentChar(0, 1, "O", core.M_OCCUPIED))
コード例 #16
0
ファイル: icontests.py プロジェクト: zangshayang1/Ascidia
 def test_allows_zero_as_head(self):
     p = self.pclass()
     p.test(main.CurrentChar(0, 1, "0", core.M_NONE))
コード例 #17
0
ファイル: icontests.py プロジェクト: zangshayang1/Ascidia
 def test_allows_start_of_leg_line(self):
     p = self.pclass()
     feed_input(p, 0, 3, "O\n")
     feed_input(p, 1, 0, "  -|-\n")
     p.test(main.CurrentChar(2, 0, "y", core.M_OCCUPIED))
     p.test(main.CurrentChar(2, 1, "&", core.M_OCCUPIED))
コード例 #18
0
ファイル: icontests.py プロジェクト: zangshayang1/Ascidia
 def test_expects_right_arm_hyphen_unoccupied(self):
     p = self.pclass()
     feed_input(p, 0, 2, "O\n")
     feed_input(p, 1, 0, "z-|")
     with self.assertRaises(core.PatternRejected):
         p.test(main.CurrentChar(1, 3, "-", core.M_OCCUPIED))
コード例 #19
0
ファイル: icontests.py プロジェクト: zangshayang1/Ascidia
 def test_expects_body_pipe_unoccupied(self):
     p = self.pclass()
     feed_input(p, 0, 2, "O\n")
     feed_input(p, 1, 0, "z-")
     with self.assertRaises(core.PatternRejected):
         p.test(main.CurrentChar(1, 2, "|", core.M_OCCUPIED))
コード例 #20
0
ファイル: icontests.py プロジェクト: zangshayang1/Ascidia
 def test_expects_body_pipe(self):
     p = self.pclass()
     feed_input(p, 0, 2, "O\n")
     feed_input(p, 1, 0, "z-")
     with self.assertRaises(core.PatternRejected):
         p.test(main.CurrentChar(1, 2, "X", core.M_NONE))
コード例 #21
0
ファイル: icontests.py プロジェクト: zangshayang1/Ascidia
 def test_rejects_if_start_of_input(self):
     p = self.pclass()
     with self.assertRaises(core.PatternRejected):
         p.test(main.CurrentChar(-1, 0, core.START_OF_INPUT, core.M_NONE))
コード例 #22
0
ファイル: icontests.py プロジェクト: zangshayang1/Ascidia
 def test_allows_rest_of_head_line(self):
     p = self.pclass()
     feed_input(p, 0, 1, "O")
     p.test(main.CurrentChar(0, 2, "a", core.M_OCCUPIED))
     p.test(main.CurrentChar(0, 3, "b", core.M_OCCUPIED))
     p.test(main.CurrentChar(0, 4, "\n", core.M_OCCUPIED))
コード例 #23
0
ファイル: icontests.py プロジェクト: zangshayang1/Ascidia
 def test_rejects_if_end_of_input(self):
     p = self.pclass()
     with self.assertRaises(core.PatternRejected):
         p.test(main.CurrentChar(1, 2, core.END_OF_INPUT, core.M_NONE))
コード例 #24
0
ファイル: icontests.py プロジェクト: zangshayang1/Ascidia
 def test_allows_start_of_arms_line(self):
     p = self.pclass()
     feed_input(p, 0, 3, "Oab\n")
     p.test(main.CurrentChar(1, 0, "c", core.M_OCCUPIED))
     p.test(main.CurrentChar(1, 1, "d", core.M_OCCUPIED))
コード例 #25
0
ファイル: ptests.py プロジェクト: zangshayang1/Ascidia
def feed_input(pattern, row, col, characters):
    for char in characters:
        pattern.test(main.CurrentChar(row, col, char, core.M_NONE))
        col += 1
コード例 #26
0
ファイル: icontests.py プロジェクト: zangshayang1/Ascidia
 def test_allows_lowercase_oh_as_head(self):
     p = self.pclass()
     p.test(main.CurrentChar(0, 1, "o", core.M_NONE))