Skip to content

Commit 76ea380

Browse files
authored
Unrolled build for #141939
Rollup merge of #141939 - Qelxiros:139911-exact-div-tests, r=workingjubilee exact_div: add tests tracking issue: #139911 I neglected to add tests in my last PR (#141237), so I've added them here. r? ``@workingjubilee`` (Feel free to reroll, I just picked you since you reviewed the last one.)
2 parents df8102f + 21a739f commit 76ea380

File tree

3 files changed

+62
-0
lines changed

3 files changed

+62
-0
lines changed

library/coretests/tests/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
#![feature(duration_constructors)]
3131
#![feature(duration_constructors_lite)]
3232
#![feature(error_generic_member_access)]
33+
#![feature(exact_div)]
3334
#![feature(exact_size_is_empty)]
3435
#![feature(extend_one)]
3536
#![feature(extern_types)]

library/coretests/tests/num/int_macros.rs

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -683,5 +683,43 @@ macro_rules! int_module {
683683
assert_eq_const_safe!($T: <$T>::unbounded_shr(17, SHIFT_AMOUNT_OVERFLOW3), 0);
684684
}
685685
}
686+
687+
const EXACT_DIV_SUCCESS_DIVIDEND1: $T = 42;
688+
const EXACT_DIV_SUCCESS_DIVISOR1: $T = 6;
689+
const EXACT_DIV_SUCCESS_QUOTIENT1: $T = 7;
690+
const EXACT_DIV_SUCCESS_DIVIDEND2: $T = 18;
691+
const EXACT_DIV_SUCCESS_DIVISOR2: $T = 3;
692+
const EXACT_DIV_SUCCESS_QUOTIENT2: $T = 6;
693+
const EXACT_DIV_SUCCESS_DIVIDEND3: $T = -91;
694+
const EXACT_DIV_SUCCESS_DIVISOR3: $T = 13;
695+
const EXACT_DIV_SUCCESS_QUOTIENT3: $T = -7;
696+
const EXACT_DIV_SUCCESS_DIVIDEND4: $T = -57;
697+
const EXACT_DIV_SUCCESS_DIVISOR4: $T = -3;
698+
const EXACT_DIV_SUCCESS_QUOTIENT4: $T = 19;
699+
700+
test_runtime_and_compiletime! {
701+
fn test_exact_div() {
702+
// 42 / 6
703+
assert_eq_const_safe!(Option<$T>: <$T>::checked_exact_div(EXACT_DIV_SUCCESS_DIVIDEND1, EXACT_DIV_SUCCESS_DIVISOR1), Some(EXACT_DIV_SUCCESS_QUOTIENT1));
704+
assert_eq_const_safe!($T: <$T>::exact_div(EXACT_DIV_SUCCESS_DIVIDEND1, EXACT_DIV_SUCCESS_DIVISOR1), EXACT_DIV_SUCCESS_QUOTIENT1);
705+
706+
// 18 / 3
707+
assert_eq_const_safe!(Option<$T>: <$T>::checked_exact_div(EXACT_DIV_SUCCESS_DIVIDEND2, EXACT_DIV_SUCCESS_DIVISOR2), Some(EXACT_DIV_SUCCESS_QUOTIENT2));
708+
assert_eq_const_safe!($T: <$T>::exact_div(EXACT_DIV_SUCCESS_DIVIDEND2, EXACT_DIV_SUCCESS_DIVISOR2), EXACT_DIV_SUCCESS_QUOTIENT2);
709+
710+
// -91 / 13
711+
assert_eq_const_safe!(Option<$T>: <$T>::checked_exact_div(EXACT_DIV_SUCCESS_DIVIDEND3, EXACT_DIV_SUCCESS_DIVISOR3), Some(EXACT_DIV_SUCCESS_QUOTIENT3));
712+
assert_eq_const_safe!($T: <$T>::exact_div(EXACT_DIV_SUCCESS_DIVIDEND3, EXACT_DIV_SUCCESS_DIVISOR3), EXACT_DIV_SUCCESS_QUOTIENT3);
713+
714+
// -57 / -3
715+
assert_eq_const_safe!(Option<$T>: <$T>::checked_exact_div(EXACT_DIV_SUCCESS_DIVIDEND4, EXACT_DIV_SUCCESS_DIVISOR4), Some(EXACT_DIV_SUCCESS_QUOTIENT4));
716+
assert_eq_const_safe!($T: <$T>::exact_div(EXACT_DIV_SUCCESS_DIVIDEND4, EXACT_DIV_SUCCESS_DIVISOR4), EXACT_DIV_SUCCESS_QUOTIENT4);
717+
718+
// failures
719+
assert_eq_const_safe!(Option<$T>: <$T>::checked_exact_div(1, 2), None);
720+
assert_eq_const_safe!(Option<$T>: <$T>::checked_exact_div(<$T>::MIN, -1), None);
721+
assert_eq_const_safe!(Option<$T>: <$T>::checked_exact_div(0, 0), None);
722+
}
723+
}
686724
};
687725
}

library/coretests/tests/num/uint_macros.rs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -516,5 +516,28 @@ macro_rules! uint_module {
516516
assert_eq_const_safe!($T: <$T>::unbounded_shr(17, SHIFT_AMOUNT_OVERFLOW3), 0);
517517
}
518518
}
519+
520+
const EXACT_DIV_SUCCESS_DIVIDEND1: $T = 42;
521+
const EXACT_DIV_SUCCESS_DIVISOR1: $T = 6;
522+
const EXACT_DIV_SUCCESS_QUOTIENT1: $T = 7;
523+
const EXACT_DIV_SUCCESS_DIVIDEND2: $T = 18;
524+
const EXACT_DIV_SUCCESS_DIVISOR2: $T = 3;
525+
const EXACT_DIV_SUCCESS_QUOTIENT2: $T = 6;
526+
527+
test_runtime_and_compiletime! {
528+
fn test_exact_div() {
529+
// 42 / 6
530+
assert_eq_const_safe!(Option<$T>: <$T>::checked_exact_div(EXACT_DIV_SUCCESS_DIVIDEND1, EXACT_DIV_SUCCESS_DIVISOR1), Some(EXACT_DIV_SUCCESS_QUOTIENT1));
531+
assert_eq_const_safe!($T: <$T>::exact_div(EXACT_DIV_SUCCESS_DIVIDEND1, EXACT_DIV_SUCCESS_DIVISOR1), EXACT_DIV_SUCCESS_QUOTIENT1);
532+
533+
// 18 / 3
534+
assert_eq_const_safe!(Option<$T>: <$T>::checked_exact_div(EXACT_DIV_SUCCESS_DIVIDEND2, EXACT_DIV_SUCCESS_DIVISOR2), Some(EXACT_DIV_SUCCESS_QUOTIENT2));
535+
assert_eq_const_safe!($T: <$T>::exact_div(EXACT_DIV_SUCCESS_DIVIDEND2, EXACT_DIV_SUCCESS_DIVISOR2), EXACT_DIV_SUCCESS_QUOTIENT2);
536+
537+
// failures
538+
assert_eq_const_safe!(Option<$T>: <$T>::checked_exact_div(1, 2), None);
539+
assert_eq_const_safe!(Option<$T>: <$T>::checked_exact_div(0, 0), None);
540+
}
541+
}
519542
};
520543
}

0 commit comments

Comments
 (0)