import { describe, expect, it } from "vitest" ;
import { sameFileIdentity, type FileIdentityStat } from "./file-identity.js" ;
function stat(dev: number | bigint, ino: number | bigint): FileIdentityStat {
return { dev, ino };
}
describe("sameFileIdentity" , () => {
it.each([
{
name: "accepts exact dev+ino match" ,
left: stat(7 , 11 ),
right: stat(7 , 11 ),
platform: "linux" as const ,
expected: true ,
},
{
name: "rejects inode mismatch" ,
left: stat(7 , 11 ),
right: stat(7 , 12 ),
platform: "linux" as const ,
expected: false ,
},
{
name: "rejects dev mismatch on non-windows" ,
left: stat(7 , 11 ),
right: stat(8 , 11 ),
platform: "linux" as const ,
expected: false ,
},
{
name: "keeps dev strictness on linux when one side is zero" ,
left: stat(0 , 11 ),
right: stat(8 , 11 ),
platform: "linux" as const ,
expected: false ,
},
{
name: "accepts win32 dev mismatch when either side is 0" ,
left: stat(0 , 11 ),
right: stat(8 , 11 ),
platform: "win32" as const ,
expected: true ,
},
{
name: "accepts win32 dev mismatch when right side is 0" ,
left: stat(7 , 11 ),
right: stat(0 , 11 ),
platform: "win32" as const ,
expected: true ,
},
{
name: "keeps dev strictness on win32 when both dev values are non-zero" ,
left: stat(7 , 11 ),
right: stat(8 , 11 ),
platform: "win32" as const ,
expected: false ,
},
{
name: "handles bigint stats" ,
left: stat(0 n, 11 n),
right: stat(8 n, 11 n),
platform: "win32" as const ,
expected: true ,
},
])("$name" , ({ left, right, platform, expected }) => {
expect(sameFileIdentity(left, right, platform)).toBe(expected);
});
});
Messung V0.5 in Prozent C=100 H=100 G=100
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet am 2026-06-10)
¤
*© Formatika GbR, Deutschland