@@ -187,12 +187,23 @@ TEST_F(FileSystemTest, FileMove) {
187187 ASSERT_NO_THROW (fs_->create_file (" /dev/a/stuff.txt" , " 20kB" ));
188188 ASSERT_DOUBLE_EQ (fs_->partition_by_name (" /dev/a/" )->get_free_space (), 70 *1000 );
189189
190+ // Moving a smaller file to a bigger file (saves space)
190191 XBT_INFO (" Move file /dev/a/b/c/foo.txt to /dev/a/stuff.txt" );
191192 ASSERT_NO_THROW (fs_->move_file (" /dev/a/b/c/foo.txt" , " /dev/a/stuff.txt" ));
192193 ASSERT_FALSE (fs_->file_exists (" /dev/a/b/c/foo.txt" ));
193194 ASSERT_TRUE (fs_->file_exists (" /dev/a/stuff.txt" ));
194195 ASSERT_DOUBLE_EQ (fs_->partition_by_name (" /dev/a/" )->get_free_space (), 80 *1000 );
195196
197+ // Moving a bigger file to a smaller file (takes space)
198+ XBT_INFO (" Create a 20kB file at /dev/a/big.txt" );
199+ ASSERT_NO_THROW (fs_->create_file (" /dev/a/big.txt" , " 20kB" ));
200+ ASSERT_DOUBLE_EQ (fs_->partition_by_name (" /dev/a/" )->get_free_space (), 60 *1000 );
201+ XBT_INFO (" Move file /dev/a/stuff.txt to /dev/a/big.txt" );
202+ ASSERT_NO_THROW (fs_->move_file (" /dev/a/stuff.txt" , " /dev/a/big.txt" ));
203+ ASSERT_FALSE (fs_->file_exists (" /dev/a/stuff.txt" ));
204+ ASSERT_TRUE (fs_->file_exists (" /dev/a/big.txt" ));
205+ ASSERT_DOUBLE_EQ (fs_->partition_by_name (" /dev/a/" )->get_free_space (), 70 *1000 );
206+
196207 auto ods = sgfs::OneDiskStorage::create (" my_storage" , disk_two_);
197208 XBT_INFO (" Mount a new partition" );
198209 ASSERT_NO_THROW (fs_->mount_partition (" /dev/b/" , ods, " 100kB" ));
0 commit comments