add unit tests for extra extension feature · model-checking/verify-rust-std@ba4c71a (original) (raw)

`@@ -1401,6 +1401,37 @@ pub fn test_set_extension() {

`

1401

1401

`tfe!("/", "foo", "/", false);

`

1402

1402

`}

`

1403

1403

``

``

1404

`+

#[test]

`

``

1405

`+

pub fn test_add_extension() {

`

``

1406

`+

macro_rules! tfe (

`

``

1407

`+

($path:expr, ext:expr,ext:expr, ext:expr,expected:expr, $output:expr) => ({

`

``

1408

`+

let mut p = PathBuf::from($path);

`

``

1409

`+

let output = p.add_extension($ext);

`

``

1410

`+

assert!(p.to_str() == Some($expected) && output == $output,

`

``

1411

`+

"adding extension of {:?} to {:?}: Expected {:?}/{:?}, got {:?}/{:?}",

`

``

1412

`+

path,path, path,ext, expected,expected, expected,output,

`

``

1413

`+

p.to_str().unwrap(), output);

`

``

1414

`+

});

`

``

1415

`+

);

`

``

1416

+

``

1417

`+

tfe!("foo", "txt", "foo.txt", true);

`

``

1418

`+

tfe!("foo.bar", "txt", "foo.bar.txt", true);

`

``

1419

`+

tfe!("foo.bar.baz", "txt", "foo.bar.baz.txt", true);

`

``

1420

`+

tfe!(".test", "txt", ".test.txt", true);

`

``

1421

`+

tfe!("foo.txt", "", "foo.txt", true);

`

``

1422

`+

tfe!("foo", "", "foo", true);

`

``

1423

`+

tfe!("", "foo", "", false);

`

``

1424

`+

tfe!(".", "foo", ".", false);

`

``

1425

`+

tfe!("foo/", "bar", "foo.bar", true);

`

``

1426

`+

tfe!("foo/.", "bar", "foo.bar", true);

`

``

1427

`+

tfe!("..", "foo", "..", false);

`

``

1428

`+

tfe!("foo/..", "bar", "foo/..", false);

`

``

1429

`+

tfe!("/", "foo", "/", false);

`

``

1430

+

``

1431

`+

// edge cases

`

``

1432

`+

tfe!("/foo.ext////", "bar", "/foo.ext.bar", true);

`

``

1433

`+

}

`

``

1434

+

1404

1435

`#[test]

`

1405

1436

`pub fn test_with_extension() {

`

1406

1437

`macro_rules! twe (

`

`@@ -1441,6 +1472,49 @@ pub fn test_with_extension() {

`

1441

1472

`twe!("ccc.bbb_bbb", "aaa_aaa_aaa", "ccc.aaa_aaa_aaa");

`

1442

1473

`}

`

1443

1474

``

``

1475

`+

#[test]

`

``

1476

`+

pub fn test_with_added_extension() {

`

``

1477

`+

macro_rules! twe (

`

``

1478

`+

($input:expr, extension:expr,extension:expr, extension:expr,expected:expr) => ({

`

``

1479

`+

let input = Path::new($input);

`

``

1480

`+

let output = input.with_added_extension($extension);

`

``

1481

+

``

1482

`+

assert!(

`

``

1483

`+

output.to_str() == Some($expected),

`

``

1484

`+

"calling Path::new({:?}).with_added_extension({:?}): Expected {:?}, got {:?}",

`

``

1485

`+

input,input, input,extension, $expected, output,

`

``

1486

`+

);

`

``

1487

`+

});

`

``

1488

`+

);

`

``

1489

+

``

1490

`+

twe!("foo", "txt", "foo.txt");

`

``

1491

`+

twe!("foo.bar", "txt", "foo.bar.txt");

`

``

1492

`+

twe!("foo.bar.baz", "txt", "foo.bar.baz.txt");

`

``

1493

`+

twe!(".test", "txt", ".test.txt");

`

``

1494

`+

twe!("foo.txt", "", "foo.txt");

`

``

1495

`+

twe!("foo", "", "foo");

`

``

1496

`+

twe!("", "foo", "");

`

``

1497

`+

twe!(".", "foo", ".");

`

``

1498

`+

twe!("foo/", "bar", "foo.bar");

`

``

1499

`+

twe!("foo/.", "bar", "foo.bar");

`

``

1500

`+

twe!("..", "foo", "..");

`

``

1501

`+

twe!("foo/..", "bar", "foo/..");

`

``

1502

`+

twe!("/", "foo", "/");

`

``

1503

+

``

1504

`+

// edge cases

`

``

1505

`+

twe!("/foo.ext////", "bar", "/foo.ext.bar");

`

``

1506

+

``

1507

`+

// New extension is smaller than file name

`

``

1508

`+

twe!("aaa_aaa_aaa", "bbb_bbb", "aaa_aaa_aaa.bbb_bbb");

`

``

1509

`+

// New extension is greater than file name

`

``

1510

`+

twe!("bbb_bbb", "aaa_aaa_aaa", "bbb_bbb.aaa_aaa_aaa");

`

``

1511

+

``

1512

`+

// New extension is smaller than previous extension

`

``

1513

`+

twe!("ccc.aaa_aaa_aaa", "bbb_bbb", "ccc.aaa_aaa_aaa.bbb_bbb");

`

``

1514

`+

// New extension is greater than previous extension

`

``

1515

`+

twe!("ccc.bbb_bbb", "aaa_aaa_aaa", "ccc.bbb_bbb.aaa_aaa_aaa");

`

``

1516

`+

}

`

``

1517

+

1444

1518

`#[test]

`

1445

1519

`fn test_eq_receivers() {

`

1446

1520

`use crate::borrow::Cow;

`