@@ -187,12 +187,23 @@ TEST_F(FileSystemTest, FileMove) {
187
187
ASSERT_NO_THROW (fs_->create_file (" /dev/a/stuff.txt" , " 20kB" ));
188
188
ASSERT_DOUBLE_EQ (fs_->partition_by_name (" /dev/a/" )->get_free_space (), 70 *1000 );
189
189
190
+ // Moving a smaller file to a bigger file (saves space)
190
191
XBT_INFO (" Move file /dev/a/b/c/foo.txt to /dev/a/stuff.txt" );
191
192
ASSERT_NO_THROW (fs_->move_file (" /dev/a/b/c/foo.txt" , " /dev/a/stuff.txt" ));
192
193
ASSERT_FALSE (fs_->file_exists (" /dev/a/b/c/foo.txt" ));
193
194
ASSERT_TRUE (fs_->file_exists (" /dev/a/stuff.txt" ));
194
195
ASSERT_DOUBLE_EQ (fs_->partition_by_name (" /dev/a/" )->get_free_space (), 80 *1000 );
195
196
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
+
196
207
auto ods = sgfs::OneDiskStorage::create (" my_storage" , disk_two_);
197
208
XBT_INFO (" Mount a new partition" );
198
209
ASSERT_NO_THROW (fs_->mount_partition (" /dev/b/" , ods, " 100kB" ));
0 commit comments