Re: [PATCH 3/4] msvcp110: Add tr2_sys__Last_write_time implementation and test.(resend)
On 07/18/15 05:15, YongHao Hu wrote:
+ /* test the formula */ + file = CreateFileA("tr2_test_dir/f1", 0, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0); + ok(file != INVALID_HANDLE_VALUE, "create file failed: INVALID_HANDLE_VALUE\n"); + ok(GetFileTime(file, 0, 0, &lwt), "GetFileTime failed\n"); + CloseHandle(file); + last_write_time = (((__int64)lwt.dwHighDateTime)<< 32) + lwt.dwLowDateTime; + last_write_time -= TICKS_1601_TO_1970; + last_write_time /= TICKSPERSEC; + ok(last_write_time == newtime, "last_write_time after converting from FILETIME to UNIX Timestamp should equal to newtime\n"); There's no guarantee that the filesystem will store the time accurately. As far as I know the test will not work on fat file system.
+ /* test negative time */ + newtime = 1111111; + p_tr2_sys__Last_write_time_set("tr2_test_dir/f1", -newtime); + last_write_time = p_tr2_sys__Last_write_time("tr2_test_dir/f1"); + todo_wine ok(1844674407369-newtime+1 == last_write_time, "last_write_time expect %s, got %s\n", + debugstr_longlong(1844674407369-newtime+1), debugstr_longlong(last_write_time)); You can't use debugstr_longlong 2 times inside one ok call. You can't use 64-bit constants this way. Also please avoid using "magic" constants. Is this test still failing on wine if unsigned __int64 is used in computations?
+ /* maximum time */ + newtime = 9223372036854775807; + p_tr2_sys__Last_write_time_set("tr2_test_dir/f1", newtime); + todo_wine ok(1844674407369 == p_tr2_sys__Last_write_time("tr2_test_dir/f1"), "last_write_time expect 1844674407369, got %s\n", + debugstr_longlong(p_tr2_sys__Last_write_time("tr2_test_dir/f1"))); I'm expecting it to fail on some filesystems. It would be nice to run this tests on fat32 filesystem.
Cheers, Piotr
participants (1)
-
Piotr Caban