initial commits

master
Charles Iliya Krempeaux 2023-11-01 19:22:11 -07:00
parent 0c8c3456a5
commit 011d3ec64f
6 changed files with 68 additions and 63 deletions

View File

@ -25,11 +25,11 @@ func Permanent[T any](value T) Temporal[T] {
} }
} }
func Temporary[T any](value T, until int64) Temporal[T] { func Temporary[T any](value T, until time.Time) Temporal[T] {
return Temporal[T]{ return Temporal[T]{
istemporary:true, istemporary:true,
value:value, value:value,
until:until, until:until.Unix(),
} }
} }
@ -64,7 +64,7 @@ func (receiver Temporal[T]) GoString() string {
return fmt.Sprintf("tmp.Permanent[%T](%#v)", receiver.value, receiver.value) return fmt.Sprintf("tmp.Permanent[%T](%#v)", receiver.value, receiver.value)
} }
return fmt.Sprintf("tmp.Temporary[%T](%#v, %d)", receiver.value, receiver.value, receiver.until) return fmt.Sprintf("tmp.Temporary[%T](%#v, time.Unix(%d, 0))", receiver.value, receiver.value, receiver.until)
} }
func (receiver Temporal[T]) IsDefunct() bool { func (receiver Temporal[T]) IsDefunct() bool {

View File

@ -3,6 +3,8 @@ package tmp_test
import ( import (
"testing" "testing"
"time"
"sourcecode.social/reiver/go-tmp" "sourcecode.social/reiver/go-tmp"
) )
@ -43,46 +45,46 @@ func TestTemporal_Filter_int(t *testing.T) {
{ {
Temporal: tmp.Temporary[int](-2, 9_223_372_036_854_775_807), // int64 problem Temporal: tmp.Temporary[int](-2, time.Unix(9_223_372_036_854_775_807,0)), // int64 problem
Expected: tmp.Temporary[int](-2, 9_223_372_036_854_775_807), Expected: tmp.Temporary[int](-2, time.Unix(9_223_372_036_854_775_807,0)),
}, },
{ {
Temporal: tmp.Temporary[int](-1, 9_223_372_036_854_775_806), // int64 problem Temporal: tmp.Temporary[int](-1, time.Unix(9_223_372_036_854_775_806,0)), // int64 problem
Expected: tmp.Nothing[int](), Expected: tmp.Nothing[int](),
}, },
{ {
Temporal: tmp.Temporary[int](0, 9_223_372_036_854_775_805), // int64 problem Temporal: tmp.Temporary[int](0, time.Unix(9_223_372_036_854_775_805,0)), // int64 problem
Expected: tmp.Temporary[int](0, 9_223_372_036_854_775_805), Expected: tmp.Temporary[int](0, time.Unix(9_223_372_036_854_775_805,0)),
}, },
{ {
Temporal: tmp.Temporary[int](1, 9_223_372_036_854_775_804), // int64 problem Temporal: tmp.Temporary[int](1, time.Unix(9_223_372_036_854_775_804,0)), // int64 problem
Expected: tmp.Nothing[int](), Expected: tmp.Nothing[int](),
}, },
{ {
Temporal: tmp.Temporary[int](2, 9_223_372_036_854_775_803), Temporal: tmp.Temporary[int](2, time.Unix(9_223_372_036_854_775_803,0)),
Expected: tmp.Temporary[int](2, 9_223_372_036_854_775_803), // int64 problem Expected: tmp.Temporary[int](2, time.Unix(9_223_372_036_854_775_803,0)), // int64 problem
}, },
{ {
Temporal: tmp.Temporary[int](-2, 111), // supposed to be in the past Temporal: tmp.Temporary[int](-2, time.Unix(111,0)), // supposed to be in the past
Expected: tmp.Nothing[int](), Expected: tmp.Nothing[int](),
}, },
{ {
Temporal: tmp.Temporary[int](-1, 111), // supposed to be in the past Temporal: tmp.Temporary[int](-1, time.Unix(111,0)), // supposed to be in the past
Expected: tmp.Nothing[int](), Expected: tmp.Nothing[int](),
}, },
{ {
Temporal: tmp.Temporary[int](0, 111), // supposed to be in the past Temporal: tmp.Temporary[int](0, time.Unix(111,0)), // supposed to be in the past
Expected: tmp.Nothing[int](), Expected: tmp.Nothing[int](),
}, },
{ {
Temporal: tmp.Temporary[int](1, 111), // supposed to be in the past Temporal: tmp.Temporary[int](1, time.Unix(111,0)), // supposed to be in the past
Expected: tmp.Nothing[int](), Expected: tmp.Nothing[int](),
}, },
{ {
Temporal: tmp.Temporary[int](2, 111), // supposed to be in the past Temporal: tmp.Temporary[int](2, time.Unix(111,0)), // supposed to be in the past
Expected: tmp.Nothing[int](), Expected: tmp.Nothing[int](),
}, },
} }

View File

@ -4,6 +4,7 @@ import (
"testing" "testing"
"fmt" "fmt"
"time"
"sourcecode.social/reiver/go-tmp" "sourcecode.social/reiver/go-tmp"
) )
@ -193,112 +194,112 @@ func TestTemporal_GoString_temporary(t *testing.T) {
tests := []struct{ tests := []struct{
Value any Value any
Until int64 Until time.Time
Expected string Expected string
}{ }{
{ {
Value: "", Value: "",
Until: 0, Until: time.Unix(0, 0),
Expected: `tmp.Temporary[string]("", 0)`, Expected: `tmp.Temporary[string]("", time.Unix(0, 0))`,
}, },
{ {
Value: "once twice thrice fource", Value: "once twice thrice fource",
Until: 1234, Until: time.Unix(1234, 0),
Expected: `tmp.Temporary[string]("once twice thrice fource", 1234)`, Expected: `tmp.Temporary[string]("once twice thrice fource", time.Unix(1234, 0))`,
}, },
{ {
Value: "apple banana cherry", Value: "apple banana cherry",
Until: 979899, Until: time.Unix(979899, 0),
Expected: `tmp.Temporary[string]("apple banana cherry", 979899)`, Expected: `tmp.Temporary[string]("apple banana cherry", time.Unix(979899, 0))`,
}, },
{ {
Value: uint8 (0x0), Value: uint8 (0x0),
Until: 101, Until: time.Unix(101, 0),
Expected: `tmp.Temporary[uint8](0x0, 101)`, Expected: `tmp.Temporary[uint8](0x0, time.Unix(101, 0))`,
}, },
{ {
Value: uint8 (0x1), Value: uint8 (0x1),
Until: 111, Until: time.Unix(111, 0),
Expected: `tmp.Temporary[uint8](0x1, 111)`, Expected: `tmp.Temporary[uint8](0x1, time.Unix(111, 0))`,
}, },
{ {
Value: uint8 (0x2), Value: uint8 (0x2),
Until: 121, Until: time.Unix(121, 0),
Expected: `tmp.Temporary[uint8](0x2, 121)`, Expected: `tmp.Temporary[uint8](0x2, time.Unix(121, 0))`,
}, },
{ {
Value: uint8 (0xfe), Value: uint8 (0xfe),
Until: 989, Until: time.Unix(989, 0),
Expected: `tmp.Temporary[uint8](0xfe, 989)`, Expected: `tmp.Temporary[uint8](0xfe, time.Unix(989, 0))`,
}, },
{ {
Value: uint8 (0xff), Value: uint8 (0xff),
Until: 999, Until: time.Unix(999, 0),
Expected: `tmp.Temporary[uint8](0xff, 999)`, Expected: `tmp.Temporary[uint8](0xff, time.Unix(999, 0))`,
}, },
{ {
Value: uint16 (0x0), Value: uint16 (0x0),
Until: 303, Until: time.Unix(303, 0),
Expected: `tmp.Temporary[uint16](0x0, 303)`, Expected: `tmp.Temporary[uint16](0x0, time.Unix(303, 0))`,
}, },
{ {
Value: uint16 (0x1), Value: uint16 (0x1),
Until: 313, Until: time.Unix(313, 0),
Expected: `tmp.Temporary[uint16](0x1, 313)`, Expected: `tmp.Temporary[uint16](0x1, time.Unix(313, 0))`,
}, },
{ {
Value: uint16 (0x2), Value: uint16 (0x2),
Until: 323, Until: time.Unix(323, 0),
Expected: `tmp.Temporary[uint16](0x2, 323)`, Expected: `tmp.Temporary[uint16](0x2, time.Unix(323, 0))`,
}, },
{ {
Value: uint16 (0xfe), Value: uint16 (0xfe),
Until: 383, Until: time.Unix(383, 0),
Expected: `tmp.Temporary[uint16](0xfe, 383)`, Expected: `tmp.Temporary[uint16](0xfe, time.Unix(383, 0))`,
}, },
{ {
Value: uint16 (0xff), Value: uint16 (0xff),
Until: 393, Until: time.Unix(393, 0),
Expected: `tmp.Temporary[uint16](0xff, 393)`, Expected: `tmp.Temporary[uint16](0xff, time.Unix(393, 0))`,
}, },
{ {
Value: uint16 (0x100), Value: uint16 (0x100),
Until: 3003, Until: time.Unix(3003, 0),
Expected: `tmp.Temporary[uint16](0x100, 3003)`, Expected: `tmp.Temporary[uint16](0x100, time.Unix(3003, 0))`,
}, },
{ {
Value: uint16 (0x101), Value: uint16 (0x101),
Until: 3113, Until: time.Unix(3113, 0),
Expected: `tmp.Temporary[uint16](0x101, 3113)`, Expected: `tmp.Temporary[uint16](0x101, time.Unix(3113, 0))`,
}, },
{ {
Value: uint16 (0x102), Value: uint16 (0x102),
Until: 3223, Until: time.Unix(3223, 0),
Expected: `tmp.Temporary[uint16](0x102, 3223)`, Expected: `tmp.Temporary[uint16](0x102, time.Unix(3223, 0))`,
}, },
{ {
Value: uint16 (0xfffe), Value: uint16 (0xfffe),
Until: 3883, Until: time.Unix(3883, 0),
Expected: `tmp.Temporary[uint16](0xfffe, 3883)`, Expected: `tmp.Temporary[uint16](0xfffe, time.Unix(3883, 0))`,
}, },
{ {
Value: uint16 (0xffff), Value: uint16 (0xffff),
Until: 3993, Until: time.Unix(3993, 0),
Expected: `tmp.Temporary[uint16](0xffff, 3993)`, Expected: `tmp.Temporary[uint16](0xffff, time.Unix(3993, 0))`,
}, },
{ {
Value: struct { A string; B int }{A:"joeblow",B:7}, Value: struct { A string; B int }{A:"joeblow",B:7},
Until: 9876543210, Until: time.Unix(9876543210, 0),
Expected: `tmp.Temporary[struct { A string; B int }](struct { A string; B int }{A:"joeblow", B:7}, 9876543210)`, Expected: `tmp.Temporary[struct { A string; B int }](struct { A string; B int }{A:"joeblow", B:7}, time.Unix(9876543210, 0))`,
}, },
} }

View File

@ -23,11 +23,11 @@ func TestTemporal_IsDefunct(t *testing.T) {
Expected: false, Expected: false,
}, },
{ {
Temporal: tmp.Temporary[string]("expired", time.Now().Unix()-999), // supposed to be in the pastasx Temporal: tmp.Temporary[string]("expired", time.Unix(time.Now().Unix()-999,0)), // supposed to be in the pastasx
Expected: true, Expected: true,
}, },
{ {
Temporal: tmp.Temporary[string]("not-expired", time.Now().Unix()+99999), Temporal: tmp.Temporary[string]("not-expired", time.Unix(time.Now().Unix()+99999,0)),
Expected: false, Expected: false,
}, },
} }

View File

@ -21,11 +21,11 @@ func TestTemporal_IsNothing(t *testing.T) {
Expected: false, Expected: false,
}, },
{ {
Temporal: Temporary[string]("expired", time.Now().Unix()-999), Temporal: Temporary[string]("expired", time.Unix(time.Now().Unix()-999,0)),
Expected: false, Expected: false,
}, },
{ {
Temporal: Temporary[string]("not-expired", time.Now().Unix()+99999), Temporal: Temporary[string]("not-expired", time.Unix(time.Now().Unix()+99999,0)),
Expected: false, Expected: false,
}, },
} }

View File

@ -3,6 +3,8 @@ package tmp_test
import ( import (
"testing" "testing"
"time"
"sourcecode.social/reiver/go-tmp" "sourcecode.social/reiver/go-tmp"
) )
@ -24,11 +26,11 @@ func TestTemporal_MarshalJSON_bool(t *testing.T) {
{ {
Value: tmp.Temporary(false, 9_223_372_036_854_775_807), // supposed to be a time far in the future Value: tmp.Temporary(false, time.Unix(9_223_372_036_854_775_807,0)), // supposed to be a time far in the future
Expected: "false", Expected: "false",
}, },
{ {
Value: tmp.Temporary(true, 9_223_372_036_854_775_806), // supposed to be a time far in the future Value: tmp.Temporary(true, time.Unix(9_223_372_036_854_775_806,0)), // supposed to be a time far in the future
Expected: "true", Expected: "true",
}, },
} }
@ -68,10 +70,10 @@ func TestTemporal_MarshalJSON_bool_fail(t *testing.T) {
{ {
Value: tmp.Temporary(false, 1234), // supposed to be a time that is already expired Value: tmp.Temporary(false, time.Unix(1234,0)), // supposed to be a time that is already expired
}, },
{ {
Value: tmp.Temporary(true, 5678), // supposed to be a time that is already expired Value: tmp.Temporary(true, time.Unix(5678,0)), // supposed to be a time that is already expired
}, },
} }