"""
------------------------------------------------------------------------------
--                                                                          --
--                                 LAB 10                                   --
--                                                                          --
--                       L A B 1 0 _ T E S T S . P Y                        --
--                                                                          --
------------------------------------------------------------------------------
-- <Your Name Here>                                                         --
--                                                                          --
-- CISC106 011 Spring 2013                                                  --
--                                                                          --
------------------------------------------------------------------------------
-- This file contains unit tests for the functions in module lab10.         --
--                                                                          --
------------------------------------------------------------------------------
"""

from lab10 import *
import ff7save
import unittest

class TestLabTen(unittest.TestCase):
    def test_create_ff7save(self):
        str1 = 'Level : 25;Name : Cloud;HP : 976/976;MP : 85/85;Characters : Cloud, Aerith & Cid;Gil : 54916;Location : "Costa Del Sol"'
        str2 = 'Level : 57;Name : Cid;HP : 5198/5274;MP : 497/497;Characters : Cid, Cloud & Yuffie;Gil : 1238699;Location : "Midgar Area"'
        str3 = 'Level : 10;Name : Aerith;HP : 105/110;MP : 32/42;Characters : Aerith, Cloud;Gil : 1686;Location : "Wall Market"'

        ff7save1 = ff7save.create(str1)
        self.assertEqual(ff7save1.name, 'Cloud')
        self.assertEqual(ff7save1.level, 25)
        self.assertEqual(ff7save1.current_hp, 976)
        self.assertEqual(ff7save1.max_hp, 976)
        self.assertEqual(ff7save1.current_mp, 85)
        self.assertEqual(ff7save1.max_mp, 85)
        self.assertEqual(ff7save1.characters[0], 'Cloud')
        self.assertEqual(ff7save1.characters[1], 'Aerith')
        self.assertEqual(ff7save1.characters[2], 'Cid')
        self.assertEqual(ff7save1.gil, 54916)
        self.assertEqual(ff7save1.location, '"Costa Del Sol"')

        ff7save2 = ff7save.create(str2)
        self.assertEqual(ff7save2.name, 'Cid')
        self.assertEqual(ff7save2.level, 57)
        self.assertEqual(ff7save2.current_hp, 5198)
        self.assertEqual(ff7save2.max_hp, 5274)
        self.assertEqual(ff7save2.current_mp, 497)
        self.assertEqual(ff7save2.max_mp, 497)
        self.assertEqual(ff7save2.characters[0], 'Cid')
        self.assertEqual(ff7save2.characters[1], 'Cloud')
        self.assertEqual(ff7save2.characters[2], 'Yuffie')
        self.assertEqual(ff7save2.gil, 1238699)
        self.assertEqual(ff7save2.location, '"Midgar Area"')

        ff7save3 = ff7save.create(str3)
        self.assertEqual(ff7save3.name, 'Aerith')
        self.assertEqual(ff7save3.level, 10)
        self.assertEqual(ff7save3.current_hp, 105)
        self.assertEqual(ff7save3.max_hp, 110)
        self.assertEqual(ff7save3.current_mp, 32)
        self.assertEqual(ff7save3.max_mp, 42)
        self.assertEqual(ff7save3.characters[0], 'Aerith')
        self.assertEqual(ff7save3.characters[1], 'Cloud')
        self.assertEqual(ff7save3.characters[2], 'No one')
        self.assertEqual(ff7save3.gil, 1686)
        self.assertEqual(ff7save3.location, '"Wall Market"')

    def test_ff7save_to_csv(self):
        str1 = 'Level : 25;Name : Cloud;HP : 976/976;MP : 85/85;Characters : Cloud, Aerith & Cid;Gil : 54916;Location : "Costa Del Sol"'
        str2 = 'Level : 57;Name : Cid;HP : 5198/5274;MP : 497/497;Characters : Cid, Cloud & Yuffie;Gil : 1238699;Location : "Midgar Area"'
        str3 = 'Level : 10;Name : Aerith;HP : 105/110;MP : 32/42;Characters : Aerith, Cloud;Gil : 1686;Location : "Wall Market"'

        self.assertEqual(ff7save.to_csv_string(ff7save.create(str1)), 'Cloud,25,976,976,85,85,Cloud,Aerith,Cid,54916,"Costa Del Sol"')
        self.assertEqual(ff7save.to_csv_string(ff7save.create(str2)), 'Cid,57,5198,5274,497,497,Cid,Cloud,Yuffie,1238699,"Midgar Area"')
        self.assertEqual(ff7save.to_csv_string(ff7save.create(str3)), 'Aerith,10,105,110,32,42,Aerith,Cloud,No one,1686,"Wall Market"')

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