Skip to content

Commit

Permalink
improve datum coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
BusyJay committed Oct 9, 2016
1 parent 9f27684 commit 2b24da2
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 1 deletion.
22 changes: 21 additions & 1 deletion src/util/codec/datum.rs
Original file line number Diff line number Diff line change
Expand Up @@ -735,7 +735,8 @@ mod test {
(&Datum::Min, &Datum::Min) |
(&Datum::Bytes(_), &Datum::Bytes(_)) |
(&Datum::Dur(_), &Datum::Dur(_)) |
(&Datum::Null, &Datum::Null) => true,
(&Datum::Null, &Datum::Null) |
(&Datum::Time(_), &Datum::Time(_)) => true,
(&Datum::Dec(ref d1), &Datum::Dec(ref d2)) => d1.prec_and_frac() == d2.prec_and_frac(),
_ => false,
}
Expand Down Expand Up @@ -786,6 +787,8 @@ mod test {
#[test]
fn test_datum_cmp() {
let tests = vec![
(Datum::F64(-1.0), Datum::Min, Ordering::Greater),
(Datum::F64(1.0), Datum::Max, Ordering::Less),
(Datum::F64(1.0), Datum::F64(1.0), Ordering::Equal),
(Datum::F64(1.0), b"1".as_ref().into(), Ordering::Equal),
(Datum::I64(1), Datum::I64(1), Ordering::Equal),
Expand Down Expand Up @@ -858,10 +861,15 @@ mod test {
(Duration::new(StdDuration::from_millis(34), false, 2).unwrap().into(),
Duration::new(StdDuration::from_millis(34), true, 2).unwrap().into(),
Ordering::Greater),
(Duration::new(StdDuration::from_millis(34), true, 2).unwrap().into(),
b"-00.34".as_ref().into(), Ordering::Greater),

(Time::parse_datetime("2011-10-10 00:00:00", 0).unwrap().into(),
Time::parse_datetime("2000-12-12 11:11:11", 0).unwrap().into(),
Ordering::Greater),
(Time::parse_datetime("2011-10-10 00:00:00", 0).unwrap().into(),
b"2000-12-12 11:11:11".as_ref().into(),
Ordering::Greater),
(Time::parse_datetime("2000-10-10 00:00:00", 0).unwrap().into(),
Time::parse_datetime("2001-10-10 00:00:00", 0).unwrap().into(),
Ordering::Less),
Expand Down Expand Up @@ -971,7 +979,13 @@ mod test {

(b"abc".as_ref().into(), b"ab".as_ref().into(), Ordering::Greater),
(b"123".as_ref().into(), Datum::I64(1234), Ordering::Less),
(b"1".as_ref().into(), Datum::Max, Ordering::Less),
(b"".as_ref().into(), Datum::Null, Ordering::Greater),

(Datum::Max, Datum::Max, Ordering::Equal),
(Datum::Max, Datum::Min, Ordering::Greater),
(Datum::Null, Datum::Min, Ordering::Less),
(Datum::Min, Datum::Min, Ordering::Equal),
];

for (lhs, rhs, ret) in tests {
Expand All @@ -992,6 +1006,12 @@ mod test {
if ret != lhs_bs.cmp(&rhs_bs) {
panic!("{:?} should be {:?} to {:?} when encoded", lhs, ret, rhs);
}

let lhs_str = format!("{:?}", lhs);
let rhs_str = format!("{:?}", rhs);
if ret == Ordering::Equal {
assert_eq!(lhs_str, rhs_str);
}
}
}
}
Expand Down
10 changes: 10 additions & 0 deletions src/util/xeval/evaluator.rs
Original file line number Diff line number Diff line change
Expand Up @@ -498,6 +498,11 @@ mod test {
(like_expr("abAb", "Aa%"), Datum::I64(0)),
(like_expr("aAcb", "%C%"), Datum::I64(1)),
(like_expr("aAb", "%C%"), Datum::I64(0)),
(bin_expr(Datum::I64(1), Datum::I64(1), ExprType::Like), Datum::I64(1)),
(bin_expr(Datum::U64(1), Datum::U64(1), ExprType::Like), Datum::I64(1)),
(bin_expr(Datum::F64(1.0), Datum::F64(1.0), ExprType::Like), Datum::I64(1)),
(bin_expr(Duration::parse(b"11:00:00", 0).unwrap().into(),
Duration::parse(b"11:00:00", 0).unwrap().into(), ExprType::Like), Datum::I64(1)),
]);

// TODO: test time
Expand Down Expand Up @@ -537,6 +542,11 @@ mod test {
(bin_expr(Datum::I64(i64::min_value()), Datum::U64(i64::max_value() as u64 + 1),
ExprType::Div), Datum::Dec((-1).into())),
(bin_expr(Datum::F64(2.0), Datum::I64(-1), ExprType::Div), Datum::F64(-2.0)),
(bin_expr(Datum::F64(2.0), Datum::U64(1), ExprType::Div), Datum::F64(2.0)),
(bin_expr(Datum::F64(2.0), Datum::Dec("0.3".parse().unwrap()), ExprType::Div),
Datum::F64(6.666666666666667)),
(bin_expr(Datum::F64(2.0), Datum::Dur(Duration::parse(b"1 00:02", 0).unwrap()),
ExprType::Div), Datum::F64(0.00000832639467110741)),
(bin_expr(Datum::Dec("3.3".parse().unwrap()), Datum::I64(-1), ExprType::Div),
Datum::Dec("-3.3".parse().unwrap())),
(bin_expr(Datum::I64(2000), Datum::Dur(Duration::parse(b"1 00:02", 0).unwrap()),
Expand Down

0 comments on commit 2b24da2

Please sign in to comment.