def test_Copy(self):
        target = '/tmp/work/__TEST__/a.txt'
        self.assertTrue(not File.IsExist(target))
        File.CreateDummy(target, 1024)
        File.Copy(target, '/tmp/work/__TEST__/b.txt')
        self.assertTrue(File.IsExist('/tmp/work/__TEST__/b.txt'))
        self.assertTrue(1024 == File.GetSize('/tmp/work/__TEST__/a.txt'))
        self.assertTrue(1024 == File.GetSize('/tmp/work/__TEST__/b.txt'))

        self.assertTrue(not os.path.exists('/tmp/work/__TEST_2__'))
        with self.assertRaises(IsADirectoryError) as e:
            File.Copy('/tmp/work/__TEST__', '/tmp/work/__TEST_2__')

        self.assertTrue(not os.path.exists('/tmp/work/__TEST_2__'))
        with self.assertRaises(IsADirectoryError) as e:
            File.Copy('/tmp/work/__TEST__', '/tmp/work/__TEST_2__/c.txt')

        self.assertTrue(not os.path.exists('/tmp/work/__TEST_2__/c.txt'))
        File.Copy('/tmp/work/__TEST__/a.txt', '/tmp/work/__TEST_2__')
        self.assertTrue(os.path.exists('/tmp/work/__TEST_2__'))
        self.assertTrue(1024 == File.GetSize('/tmp/work/__TEST_2__'))

        File.Delete('/tmp/work/__TEST__/a.txt')
        File.Delete('/tmp/work/__TEST__/b.txt')
        File.Delete('/tmp/work/__TEST_2__')
        Directory.Delete('/tmp/work/__TEST__')
    def test_Accessed(self):
        target_root = '/tmp/work/__TEST__'
        target_dummy = os.path.join(target_root, 'a.dummy')
        File.CreateDummy(target_dummy, 1024)

        s = File(target_root)
        self.assertTrue(tuple == type(s.Accessed))
        self.assertTrue(2 == len(s.Accessed))
        self.assertTrue(float == type(s.Accessed[0]))
        self.assertTrue(datetime.datetime == type(s.Accessed[1]))
        dt1 = datetime.datetime.strptime('1999/12/31 23:59:59',
                                         '%Y/%m/%d %H:%M:%S')
        dt2 = datetime.datetime.strptime('2345/01/02 12:34:56',
                                         '%Y/%m/%d %H:%M:%S')
        epoch, dt = s.Accessed
        self.assertTrue(dt1 != dt)
        self.assertTrue(dt2 != dt)

        s.Accessed = dt1
        self.assertTrue(int(time.mktime(dt1.timetuple())) == s.Accessed[0])
        self.assertTrue(dt1 == s.Accessed[1])
        self.assertTrue(dt1 != s.Modified[1])
        self.assertTrue(dt1 != s.Created[1])
        self.assertTrue(dt1 != s.ChangedMeta[1])
        Directory.Delete(target_root)
    def test_Modified_Get_Set(self):
        target_root = '/tmp/work/__TEST__'
        target_dummy = os.path.join(target_root, 'a.dummy')
        File.CreateDummy(target_dummy, 1024)

        self.assertTrue(tuple == type(File.GetModified(target_dummy)))
        self.assertTrue(2 == len(File.GetModified(target_dummy)))
        self.assertTrue(float == type(File.GetModified(target_dummy)[0]))
        self.assertTrue(
            datetime.datetime == type(File.GetModified(target_dummy)[1]))
        #print(type(File.GetModified(target_dummy)[0]))
        #print(type(File.GetModified(target_dummy)[1]))
        dt1 = datetime.datetime.strptime('1999/12/31 23:59:59',
                                         '%Y/%m/%d %H:%M:%S')
        dt2 = datetime.datetime.strptime('2345/01/02 12:34:56',
                                         '%Y/%m/%d %H:%M:%S')
        epoch, dt = File.GetModified(target_dummy)
        self.assertTrue(dt1 != dt)
        self.assertTrue(dt2 != dt)

        File.SetModified(target_dummy, dt1)
        self.assertTrue(
            int(time.mktime(dt1.timetuple())) == File.GetModified(target_dummy)
            [0])
        self.assertTrue(dt1 == File.GetModified(target_dummy)[1])
        self.assertTrue(dt1 != File.GetChangedMeta(target_dummy)[1])
        self.assertTrue(dt1 != File.GetAccessed(target_dummy)[1])
        Directory.Delete(target_root)
    def test_Path(self):
        target_root = '/tmp/work/__TEST__'
        target_dummy = os.path.join(target_root, 'a.dummy')
        File.CreateDummy(target_dummy, 1024)

        s = File(target_root)
        self.assertEqual('/tmp/work/__TEST__', s.Path)
        Directory.Delete(target_root)
 def test_CreateDummy(self):
     target = '/tmp/work/__TEST__/a.txt'
     self.assertTrue(not File.IsExist(target))
     File.CreateDummy(target, 1024)
     self.assertTrue(File.IsExist(target))
     self.assertTrue(1024 == File.GetSize(target))
     File.Delete(target)
     self.assertTrue(not File.IsExist(target))
     target = '/tmp/work/__TEST__/A/B/C/d.e'
     self.assertTrue(not File.IsExist(target))
     File.CreateDummy(target, 4096)
     self.assertTrue(File.IsExist(target))
     self.assertTrue(4096 == File.GetSize(target))
     File.Delete(target)
     self.assertTrue(not File.IsExist(target))
     target = '/tmp/work/__TEST__'
     Directory.Delete(target)
 def test_GetChangedMeta(self):
     target_root = '/tmp/work/__TEST__'
     target_dummy = os.path.join(target_root, 'a.dummy')
     File.CreateDummy(target_dummy, 1024)
     self.assertTrue(hasattr(File, 'GetChangedMeta'))
     self.assertTrue(hasattr(File, 'GetCreated'))
     print(File.GetChangedMeta(target_dummy))
     print(File.GetCreated(target_dummy))
     Directory.Delete(target_root)
 def test_ChangedMeta(self):
     target_root = '/tmp/work/__TEST__'
     target_dummy = os.path.join(target_root, 'a.dummy')
     File.CreateDummy(target_dummy, 1024)
     s = File(target_root)
     self.assertTrue(hasattr(s, 'ChangedMeta'))
     self.assertTrue(hasattr(s, 'Created'))
     print(s.ChangedMeta)
     print(s.Created)
     Directory.Delete(target_root)
    def test_GetSize(self):
        target_root = '/tmp/work/__TEST__'
        path_a = os.path.join(target_root, 'a.dummy')
        File.CreateDummy(path_a, 1024)
        self.assertEqual(1024, File.GetSize(path_a))

        path_b = os.path.join(target_root, 'B', 'b.dummy')
        File.CreateDummy(path_b, 2048)
        self.assertEqual(2048, File.GetSize(path_b))

        path_c = os.path.join(target_root, 'C', 'c.dummy')
        File.CreateDummy(path_c, 3072)
        self.assertEqual(3072, File.GetSize(path_c))

        path_d = os.path.join(target_root, 'D/DD/d.dummy')
        File.CreateDummy(path_d, 4096)
        self.assertEqual(4096, File.GetSize(path_d))

        Directory.Delete(target_root)
 def test_SetModeFromName_Error(self):
     target_root = '/tmp/work/__TEST__'
     target_dummy = os.path.join(target_root, 'a.dummy')
     File.CreateDummy(target_dummy, 1024)
     mode_name = 'Invalid-Text'
     with self.assertRaises(ValueError) as e:
         File.SetMode(target_dummy, mode_name)
     mode_names = ['---', '--x', '-w-', '-wx', 'r--', 'r-x', 'rw-', 'rwx']
     self.assertEqual(
         '引数mode_nameが不正値です。\'{}\'。\'-rwxrwxrwx\'の書式で入力してください。owner, group, other, の順に次のパターンのいずれかを指定します。pattern={}。r,w,xはそれぞれ、読込、書込、実行の権限です。-は権限なしを意味します。'
         .format(mode_name, mode_names), e.exception.args[0])
     Directory.Delete(target_root)
 def test_Ids(self):
     target_root = '/tmp/work/__TEST__'
     target_dummy = os.path.join(target_root, 'a.dummy')
     File.CreateDummy(target_dummy, 1024)
     self.assertTrue(hasattr(File, 'OwnUserId'))
     self.assertTrue(hasattr(File, 'OwnGroupId'))
     self.assertTrue(hasattr(File, 'HardLinkNum'))
     self.assertTrue(hasattr(File, 'INode'))
     self.assertTrue(hasattr(File, 'DeviceId'))
     print(File.GetOwnUserId(target_dummy))
     print(File.GetOwnGroupId(target_dummy))
     print(File.GetHardLinkNum(target_dummy))
     print(File.GetINode(target_dummy))
     print(File.GetDeviceId(target_dummy))
     Directory.Delete(target_root)
 def test_Ids_Property(self):
     target_root = '/tmp/work/__TEST__'
     target_dummy = os.path.join(target_root, 'a.dummy')
     File.CreateDummy(target_dummy, 1024)
     s = File(target_root)
     self.assertTrue(hasattr(s, 'OwnUserId'))
     self.assertTrue(hasattr(s, 'OwnGroupId'))
     self.assertTrue(hasattr(s, 'HardLinkNum'))
     self.assertTrue(hasattr(s, 'INode'))
     self.assertTrue(hasattr(s, 'DeviceId'))
     print(s.OwnUserId)
     print(s.OwnGroupId)
     print(s.HardLinkNum)
     print(s.INode)
     print(s.DeviceId)
     Directory.Delete(target_root)
    def test_Mode(self):
        target_root = '/tmp/work/__TEST__'
        target_dummy = os.path.join(target_root, 'a.dummy')
        File.CreateDummy(target_dummy, 1024)

        s = File(target_root)
        s.Mode = 0o777
        self.assertEqual(0o40777, s.Mode)
        self.assertEqual('drwxrwxrwx', s.ModeName)
        s.Mode = 0o644
        self.assertEqual(0o40644, s.Mode)
        self.assertEqual('drw-r--r--', s.ModeName)
        s.Mode = '-rwxrwxrwx'
        self.assertEqual(0o40777, s.Mode)
        self.assertEqual('drwxrwxrwx', s.ModeName)
        Directory.Delete(target_root)
 def test_Mode_Get_Set_Name(self):
     target_root = '/tmp/work/__TEST__'
     target_dummy = os.path.join(target_root, 'a.dummy')
     File.CreateDummy(target_dummy, 1024)
     mode = File.GetMode(target_dummy)
     print(mode)
     print(oct(mode))
     File.SetMode(target_dummy, 0o755)
     self.assertEqual(0o100755, File.GetMode(target_dummy))
     self.assertEqual('-rwxr-xr-x', File.GetModeName(target_dummy))
     File.SetMode(target_dummy, '-rwxrwxrwx')
     self.assertEqual(0o100777, File.GetMode(target_dummy))
     File.SetMode(target_dummy, 0o644)
     self.assertEqual(0o100644, File.GetMode(target_dummy))
     self.assertEqual('-rw-r--r--', File.GetModeName(target_dummy))
     Directory.Delete(target_root)