import unittest

import sys
sys.path.append('src') # you must execute pytest from the stickfosh dir for this to work

from logic.position import Position

class PositionTests(unittest.TestCase):
    def testXY2Algebraic(self):
        self.assertEqual(Position(0, 0).to_algebraic(), "a1")
        self.assertEqual(Position(1, 0).to_algebraic(), "b1")

        self.assertEqual(Position(2, 1).to_algebraic(), "c2")
        self.assertEqual(Position(4, 2).to_algebraic(), "e3")

        self.assertEqual(Position(7, 7).to_algebraic(), "h8")

    def testAlgebraic2XY(self):
        self.assertEqual(Position.from_algebraic("a1"), Position(0, 0))
        self.assertEqual(Position.from_algebraic("b1"), Position(1, 0))

        self.assertEqual(Position.from_algebraic("c2"), Position(2, 1))
        self.assertEqual(Position.from_algebraic("e3"), Position(4, 2))

        self.assertEqual(Position.from_algebraic("h8"), Position(7, 7))

        self.assertRaises(AssertionError, lambda : Position.from_algebraic("a11"))

        self.assertRaises(ValueError, lambda : Position.from_algebraic("j1"))
        self.assertRaises(ValueError, lambda : Position.from_algebraic("a9"))