Skip to content

Commit

Permalink
feat: Add test lib_ccxr/time/units.rs
Browse files Browse the repository at this point in the history
  • Loading branch information
IshanGrover2004 committed Jul 18, 2024
1 parent a6cb435 commit c1825d8
Showing 1 changed file with 145 additions and 0 deletions.
145 changes: 145 additions & 0 deletions src/rust/lib_ccxr/src/time/units.rs
Original file line number Diff line number Diff line change
Expand Up @@ -643,3 +643,148 @@ impl GopTimeCode {
)
}
}

#[cfg(test)]
mod tests {
use super::*;

#[test]
fn test_timestamp_from_millis() {
let ts = Timestamp::from_millis(5000);
assert_eq!(ts.millis(), 5000);
assert_eq!(ts.seconds(), 5);
}

#[test]
fn test_timestamp_from_hms_millis() {
let ts = Timestamp::from_hms_millis(1, 30, 45, 500).unwrap();
assert_eq!(ts.millis(), 5445500);

// Out of range case
assert!(matches!(
Timestamp::from_hms_millis(1, 60, 0, 0),
Err(TimestampError::InputOutOfRangeError)
));
}

#[test]
fn test_timestamp_as_sec_millis() {
let ts = Timestamp::from_millis(5445500);
assert_eq!(ts.as_sec_millis().unwrap(), (5445, 500));

let ts = Timestamp::from_millis(0);
assert_eq!(ts.as_sec_millis().unwrap(), (0, 0));

let ts = Timestamp::from_millis(1000);
assert_eq!(ts.as_sec_millis().unwrap(), (1, 0));

let ts = Timestamp::from_millis(-1000);
assert!(ts.as_sec_millis().is_err());
}

#[test]
fn test_timestamp_as_hms_millis() {
let ts = Timestamp::from_millis(5445500);
assert_eq!(ts.as_hms_millis().unwrap(), (1, 30, 45, 500));

let ts = Timestamp::from_millis(0);
assert_eq!(ts.as_hms_millis().unwrap(), (0, 0, 0, 0));

let ts = Timestamp::from_millis(3600000);
assert_eq!(ts.as_hms_millis().unwrap(), (1, 0, 0, 0));

let ts = Timestamp::from_millis(-1);
assert!(ts.as_hms_millis().is_err());
}

#[test]
fn test_timestamp_to_srt_time() {
let ts = Timestamp::from_millis(5445500);
assert_eq!(ts.to_srt_time().unwrap(), "01:30:45,500");

let ts = Timestamp::from_millis(0);
assert_eq!(ts.to_srt_time().unwrap(), "00:00:00,000");

let ts = Timestamp::from_millis(3661001);
assert_eq!(ts.to_srt_time().unwrap(), "01:01:01,001");

let ts = Timestamp::from_millis(-1);
assert!(ts.to_srt_time().is_err());
}

#[test]
fn test_timestamp_to_vtt_time() {
let ts = Timestamp::from_millis(5445500);
assert_eq!(ts.to_vtt_time().unwrap(), "01:30:45.500");

let ts = Timestamp::from_millis(0);
assert_eq!(ts.to_vtt_time().unwrap(), "00:00:00.000");

let ts = Timestamp::from_millis(3661001);
assert_eq!(ts.to_vtt_time().unwrap(), "01:01:01.001");

let ts = Timestamp::from_millis(-1);
assert!(ts.to_vtt_time().is_err());
}

#[test]
fn test_timestamp_to_hms_millis_time() {
let ts = Timestamp::from_millis(5445500);
assert_eq!(ts.to_hms_millis_time(':').unwrap(), "01:30:45:500");

let ts = Timestamp::from_millis(0);
assert_eq!(ts.to_hms_millis_time('.').unwrap(), "00:00:00.000");

let ts = Timestamp::from_millis(-3661001);
assert_eq!(ts.to_hms_millis_time(':').unwrap(), "-01:01:01:001");

let ts = Timestamp::from_millis(1);
assert_eq!(ts.to_hms_millis_time(':').unwrap(), "00:00:00:001");
}

#[test]
fn test_timestamp_to_ctime() {
let ts = Timestamp::from_millis(5445500);
assert_eq!(ts.to_ctime().unwrap(), "Thu Jan 01 01:30:45 1970");

let ts = Timestamp::from_millis(0);
assert_eq!(ts.to_ctime().unwrap(), "Thu Jan 01 00:00:00 1970");

let ts = Timestamp::from_millis(31536000000); // 1 year later
assert_eq!(ts.to_ctime().unwrap(), "Fri Jan 01 00:00:00 1971");

let ts = Timestamp::from_millis(-1);
assert!(ts.to_ctime().is_err());
}

#[test]
fn test_timestamp_parse_optional_hhmmss_from_str() {
assert_eq!(
Timestamp::parse_optional_hhmmss_from_str("01:30:45").unwrap(),
Timestamp::from_millis(5445000)
);
assert_eq!(
Timestamp::parse_optional_hhmmss_from_str("30:45").unwrap(),
Timestamp::from_millis(1845000)
);

// Error cases
assert!(matches!(
Timestamp::parse_optional_hhmmss_from_str("01:60:00"),
Err(TimestampError::InputOutOfRangeError)
));
assert!(matches!(
Timestamp::parse_optional_hhmmss_from_str("01:30:45:00"),
Err(TimestampError::ParsingError)
));
}

#[test]
fn test_timestamp_arithmetic() {
let ts1 = Timestamp::from_millis(5000);
let ts2 = Timestamp::from_millis(3000);
assert_eq!((ts1 + ts2).millis(), 8000);
assert_eq!((ts1 - ts2).millis(), 2000);
assert_eq!((-ts1).millis(), -5000);
}
}

0 comments on commit c1825d8

Please sign in to comment.