diff options
Diffstat (limited to 'cisa/date_test.go')
| -rw-r--r-- | cisa/date_test.go | 374 | 
1 files changed, 0 insertions, 374 deletions
| diff --git a/cisa/date_test.go b/cisa/date_test.go deleted file mode 100644 index 47e152e..0000000 --- a/cisa/date_test.go +++ /dev/null @@ -1,374 +0,0 @@ -package cisa - -import ( -  "encoding/json" -  "fmt" -  "reflect" -  "testing" -) - -func TestIsLeapYear(t *testing.T) { -  tests := []struct { -    val uint16 -    exp bool -  } { -    { 1800, false }, -    { 1900, false }, -    { 1996, true }, -    { 1997, false }, -    { 1998, false }, -    { 1999, false }, -    { 2000, true }, -    { 2001, false }, -    { 2002, false }, -    { 2003, false }, -    { 2004, true }, -    { 2005, false }, -    { 2006, false }, -    { 2007, false }, -    { 2008, true }, -    { 2009, false }, -    { 2010, false }, -    { 2011, false }, -    { 2012, true }, -    { 2013, false }, -    { 2014, false }, -    { 2015, false }, -    { 2016, true }, -    { 2017, false }, -    { 2018, false }, -    { 2019, false }, -    { 2020, true }, -    { 2021, false }, -    { 2022, false }, -    { 2023, false }, -    { 2024, true }, -    { 2100, false }, -    { 2400, true }, -  } - -  for _, test := range(tests) { -    t.Run(fmt.Sprintf("%d", test.val), func(t *testing.T) { -      got := isLeapYear(test.val) -      if got != test.exp { -        t.Errorf("got %v, exp %v", got, test.exp) -      } -    }) -  } -} - -func TestGetMaxMonthDay(t *testing.T) { -  tests := []struct { -    y uint16 -    m uint16 -    exp uint16 -  } { -    { 2000, 2, 29 }, // test leap year -    { 2001, 2, 28 }, // test non-leap year -    { 2022, 1, 31 }, // test full non-leap year -    { 2022, 2, 28 }, -    { 2022, 3, 31 }, -    { 2022, 4, 30 }, -    { 2022, 5, 31 }, -    { 2022, 6, 30 }, -    { 2022, 7, 31 }, -    { 2022, 8, 31 }, -    { 2022, 9, 30 }, -    { 2022, 10, 31 }, -    { 2022, 11, 30 }, -    { 2022, 12, 31 }, -  } - -  for _, test := range(tests) { -    t.Run(fmt.Sprintf("%04d-%02d", test.y, test.m), func(t *testing.T) { -      got := getMaxMonthDay(test.y, test.m) -      if got != test.exp { -        t.Errorf("got %v, exp %v", got, test.exp) -      } -    }) -  } -} - -func TestParseDateComponent(t *testing.T) { -  tests := []struct { -    name  string -    val   string -    min   uint16 -    max   uint16 -    exp   bool -  } { -    { "bad-uint", "abcd", 2000, 2001, false }, -    { "y-pass", "2000", 2000, 2001, true }, -    { "y-fail-lo", "1999", 2000, 2001, false }, -    { "y-fail-hi", "2002", 2000, 2001, false }, -    { "m-pass-1", "1", 1, 12, true }, -    { "m-pass-2", "2", 1, 12, true }, -    { "m-pass-3", "3", 1, 12, true }, -    { "m-pass-4", "4", 1, 12, true }, -    { "m-pass-5", "5", 1, 12, true }, -    { "m-pass-6", "6", 1, 12, true }, -    { "m-pass-7", "7", 1, 12, true }, -    { "m-pass-8", "8", 1, 12, true }, -    { "m-pass-9", "9", 1, 12, true }, -    { "m-pass-10", "10", 1, 12, true }, -    { "m-pass-11", "11", 1, 12, true }, -    { "m-pass-12", "12", 1, 12, true }, -    { "m-fail-lo", "0", 1, 12, false }, -    { "m-fail-hi", "13", 1, 12, false }, -    { "d-pass-1", "1", 1, 31, true }, -    { "d-pass-10", "10", 1, 31, true }, -    { "d-pass-30", "10", 1, 31, true }, -    { "d-fail-lo", "0", 1, 31, false }, -    { "d-fail-hi", "32", 1, 31, false }, -  } - -  for _, test := range(tests) { -    t.Run(test.name, func(t *testing.T) { -      got, err := parseDateComponent("a", []byte(test.val), test.min, test.max) -      if err != nil && test.exp == true { -        t.Error(err) -      } else if err == nil && test.exp == false { -        t.Errorf("got %v, exp error", got) -      } -    }) -  } -} - -func TestNewDate(t *testing.T) { -  tests := []struct { -    name string -    val string -    exp bool -  } { -    { "pass", "2000-01-03", true }, -    { "pass-lo", "1999-01-01", true }, -    { "pass-hi", "2126-12-31", true }, -    { "fail", "asdf", false }, -    { "fail-y-lo", "1998-01-03", false }, -    { "fail-y-hi", "2128-01-03", false }, -    { "fail-m-lo", "2126-00-03", false }, -    { "fail-m-hi", "2126-13-03", false }, -    { "fail-d-lo", "2126-01-00", false }, -    { "fail-d-hi", "2126-01-32", false }, -    { "fail-d-hi", "2126-02-29", false }, -    { "fail-d-hi", "2126-03-32", false }, -    { "fail-d-hi", "2126-04-31", false }, -    { "fail-d-hi", "2126-05-32", false }, -    { "fail-d-hi", "2126-06-31", false }, -  } - -  for _, test := range(tests) { -    t.Run(test.name, func(t *testing.T) { -      if got, err := NewDate([]byte(test.val)); err != nil && test.exp { -        t.Error(err) -      } else if err == nil && !test.exp { -        t.Errorf("got %v, exp error", got) -      } -    }) -  } -} - -func TestGetComponents(t *testing.T) { -  type date struct { -    y uint16 -    m uint16 -    d uint16 -  } - -  tests := []struct { -    val string -    exp date -  } { -    { "2022-10-31", date { 2022, 10, 31 } }, -  } - -  for _, test := range(tests) { -    t.Run(test.val, func(t *testing.T) { -      // create date -      dt, err := NewDate([]byte(test.val)) -      if err != nil { -        t.Error(err) -        return -      } - -      // get components -      y, m, d := dt.GetComponents() -      got := date { y, m, d } - -      // check components -      if !reflect.DeepEqual(got, test.exp) { -        t.Errorf("got %v, exp %v", got, test.exp) -      } -    }) -  } -} - -func TestYear(t *testing.T) { -  tests := []struct { -    val string -    exp uint16 -  } { -    { "2022-10-31", 2022 }, -  } - -  for _, test := range(tests) { -    t.Run(test.val, func(t *testing.T) { -      // create date -      dt, err := NewDate([]byte(test.val)) -      if err != nil { -        t.Error(err) -        return -      } - -      // get year -      got := dt.Year() - -      // check components -      if got != test.exp { -        t.Errorf("got year %d, exp %d", got, test.exp) -      } -    }) -  } -} - -func TestMonth(t *testing.T) { -  tests := []struct { -    val string -    exp uint16 -  } { -    { "2022-10-31", 10 }, -  } - -  for _, test := range(tests) { -    t.Run(test.val, func(t *testing.T) { -      // create date -      dt, err := NewDate([]byte(test.val)) -      if err != nil { -        t.Error(err) -        return -      } - -      // get month -      got := dt.Month() - -      // check components -      if got != test.exp { -        t.Errorf("got month %d, exp %d", got, test.exp) -      } -    }) -  } -} - -func TestDay(t *testing.T) { -  tests := []struct { -    val string -    exp uint16 -  } { -    { "2022-10-31", 31 }, -  } - -  for _, test := range(tests) { -    t.Run(test.val, func(t *testing.T) { -      // create date -      dt, err := NewDate([]byte(test.val)) -      if err != nil { -        t.Error(err) -        return -      } - -      // get day -      got := dt.Day() - -      // check components -      if got != test.exp { -        t.Errorf("got day %d, exp %d", got, test.exp) -      } -    }) -  } -} - -func TestString(t *testing.T) { -  tests := []string { -    "2022-10-31", -  } - -  for _, test := range(tests) { -    t.Run(test, func(t *testing.T) { -      // create date -      dt, err := NewDate([]byte(test)) -      if err != nil { -        t.Error(err) -        return -      } - -      // get/check string -      got := dt.String() -      if got != test { -        t.Errorf("got %s, exp %s", got, test) -      } -    }) -  } -} - -func TestDateUnmarshalJSON(t *testing.T) { -  passTests := []struct { -    val string -    exp string -  } { -    { `"2022-02-03"`, "2022-02-03" }, -  } - -  for _, test := range(passTests) { -    var got Date -    if err := json.Unmarshal([]byte(test.val), &got); err != nil { -      t.Error(err) -    } else if got.String() != test.exp { -      t.Errorf("got \"%s\", exp \"%s\"", got.String(), test.exp) -    } -  } - -  failTests := []struct { -    name string -    val  string -  } { -    { "fail-str", "asdf" }, -    { "fail-parse", "\"asdf\"" }, -  } - -  for _, test := range(failTests) { -    t.Run(test.name, func(t *testing.T) { -      var got Date -      if err := got.UnmarshalJSON([]byte(test.val)); err == nil { -        t.Errorf("got \"%v\" exp error", got) -      } -    }) -  } - -} - -func TestDateMarshalJSON(t *testing.T) { -  tests := []struct { -    val string -    exp string -  } { -    { "2022-10-31", `"2022-10-31"` }, -  } - -  for _, test := range(tests) { -    t.Run(test.val, func(t *testing.T) { -      // create date -      dt, err := NewDate([]byte(test.val)) -      if err != nil { -        t.Error(err) -        return -      } - -      // get/check string -      if got, err := dt.MarshalJSON(); err != nil { -        t.Error(err) -      } else if string(got) != test.exp { -        t.Errorf("got \"%s\", exp \"%s\"", got, test.exp) -      } -    }) -  } -} | 
