37 lines
1.7 KiB
Plaintext
37 lines
1.7 KiB
Plaintext
package path_test;
|
|
|
|
import path;
|
|
|
|
|
|
// ref/hare/path/posix.ha:51-71. Hare seeds each row through _local/local()
|
|
// for cross-platform SEP; on ww (Linux, SEP='/') that is identity, so the
|
|
// raw str literals stand in directly (local/_local defer to c3). POSIX
|
|
// dirname/basename do NOT normalize the input (posix.ha:14-15,35), so no
|
|
// seeding is needed. Parallel `[N]str` rows (cgen chained-field gap, as
|
|
// above). Rows whose expected is a borrowed VIEW (not a "."/"/" literal)
|
|
// compare a computed str to a literal — cstage-correct; wwstage mis-
|
|
// compares via #146 (str== over a frombytes result), and this @test is
|
|
// cstage-gated, so those rows are #146-deferred on wwstage only.
|
|
|
|
@test fn dirname_basename_cases() void = {
|
|
let inputs: [10]str;
|
|
let wantdir: [10]str;
|
|
let wantbase: [10]str;
|
|
inputs[0]="usr"; wantdir[0]="."; wantbase[0]="usr";
|
|
inputs[1]="usr/"; wantdir[1]="."; wantbase[1]="usr";
|
|
inputs[2]=""; wantdir[2]="."; wantbase[2]=".";
|
|
inputs[3]="/"; wantdir[3]="/"; wantbase[3]="/";
|
|
inputs[4]="//"; wantdir[4]="/"; wantbase[4]="/"; // impl-defined
|
|
inputs[5]="///"; wantdir[5]="/"; wantbase[5]="/";
|
|
inputs[6]="/usr/"; wantdir[6]="/"; wantbase[6]="usr";
|
|
inputs[7]="/usr/lib"; wantdir[7]="/usr"; wantbase[7]="lib";
|
|
inputs[8]="//usr//lib//"; wantdir[8]="//usr"; wantbase[8]="lib";
|
|
inputs[9]="/home//dwc//test"; wantdir[9]="/home//dwc"; wantbase[9]="test";
|
|
let i: i32 = 0;
|
|
for (i < 10) {
|
|
assert(!(path.dirname(inputs[i]) != wantdir[i]));
|
|
assert(!(path.basename(inputs[i]) != wantbase[i]));
|
|
i += 1;
|
|
};
|
|
};
|