time: move - operator to operator.v (#7433)
parent
c69947160b
commit
c639dd03d0
|
@ -44,3 +44,11 @@ pub fn (t1 Time) gt(t2 Time) bool {
|
|||
pub fn (t1 Time) ge(t2 Time) bool {
|
||||
return t1.gt(t2) || t1.eq(t2)
|
||||
}
|
||||
|
||||
// Time subtract using eperator overloading
|
||||
[inline]
|
||||
pub fn (lhs Time) -(rhs Time) Duration {
|
||||
lhs_micro := lhs.unix * 1000 * 1000 + u64(lhs.microsecond)
|
||||
rhs_micro := rhs.unix * 1000 * 1000 + u64(rhs.microsecond)
|
||||
return (i64(lhs_micro) - i64(rhs_micro)) * microsecond
|
||||
}
|
||||
|
|
|
@ -367,3 +367,25 @@ fn test_time2_copied_from_time1_should_be_equal() {
|
|||
t2 := new_time(t1)
|
||||
assert t2.eq(t1)
|
||||
}
|
||||
|
||||
fn test_subtract() {
|
||||
d_seconds := 3
|
||||
d_microseconds := 13
|
||||
duration := d_seconds * second + d_microseconds * microsecond
|
||||
t1 := new_time(Time{
|
||||
year: 2000
|
||||
month: 5
|
||||
day: 10
|
||||
hour: 22
|
||||
minute: 11
|
||||
second: 3
|
||||
microsecond: 100
|
||||
})
|
||||
t2 := unix2(int(t1.unix) + d_seconds, t1.microsecond + d_microseconds)
|
||||
d1 := t2 - t1
|
||||
d2 := t1 - t2
|
||||
assert d1 > 0
|
||||
assert d1 == duration
|
||||
assert d2 < 0
|
||||
assert d2 == -duration
|
||||
}
|
||||
|
|
|
@ -355,13 +355,6 @@ pub fn (t Time) str() string {
|
|||
return t.format_ss()
|
||||
}
|
||||
|
||||
// Time subtract using eperator overloading
|
||||
pub fn (lhs Time) -(rhs Time) Duration {
|
||||
lhs_micro := lhs.unix * 1000 * 1000 + u64(lhs.microsecond)
|
||||
rhs_micro := rhs.unix * 1000 * 1000 + u64(rhs.microsecond)
|
||||
return (i64(lhs_micro) - i64(rhs_micro)) * microsecond
|
||||
}
|
||||
|
||||
fn convert_ctime(t C.tm, microsecond int) Time {
|
||||
return Time{
|
||||
year: t.tm_year + 1900
|
||||
|
|
|
@ -177,20 +177,6 @@ fn test_str() {
|
|||
assert '1980-07-11 21:23:42' == time_to_test.str()
|
||||
}
|
||||
|
||||
fn test_subtract() {
|
||||
d_seconds := 3
|
||||
d_microseconds := 13
|
||||
duration := d_seconds * time.second + d_microseconds * time.microsecond
|
||||
t1 := time_to_test
|
||||
t2 := time.unix2(int(t1.unix) + d_seconds, t1.microsecond + d_microseconds)
|
||||
d1 := t2 - t1
|
||||
d2 := t1 - t2
|
||||
assert d1 > 0
|
||||
assert d1 == duration
|
||||
assert d2 < 0
|
||||
assert d2 == -duration
|
||||
}
|
||||
|
||||
// not optimal test but will find obvious bugs
|
||||
fn test_now() {
|
||||
now := time.now()
|
||||
|
|
Loading…
Reference in New Issue