import unittest
from stack import Stack


class StackEmptyTestCase(unittest.TestCase):
    """Test behaviour of an empty Stack."""

    def setUp(self):
        """Set up an empty stack."""
        self.s1 = Stack()
        self.s2 = Stack()

    def tearDown(self):
        """Clean up."""
        self.s1 = None
        self.s2 = None

    def test_IsEmpty(self):
        """Test is_empty() on empty Stack."""
        # it's hard to avoid \ continuation here.
        self.assertTrue(self.s1.is_empty())

    def test_add(self):
        """Test add to empty Stack."""

        self.s1.add("foo")
        self.assertTrue(self.s1.remove() == "foo")


    def test_equality(self):
        """test if two non-empty stack are equal"""
        self.s1.add("foo")
        self.s1.add("jijiji")
        self.s2.add("foo")
        self.s2.add("jijiji")

        self.assertTrue(self.s1 == self.s2)

    def test_not_equality(self):
        """test if two non-empty stack are equal"""
        self.s1.add("foo")
        self.s1.add("Joo")
        self.s2.add("Joo")
        self.s2.add("foo")
        self.assertFalse(self.s1 == self.s2)


if __name__ == '__main__':
    unittest.main(exit=False)
