ordered_test.go - hugo - [fork] hugo port for 9front
 (HTM) git clone https://git.drkhsh.at/hugo.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Submodules
 (DIR) README
 (DIR) LICENSE
       ---
       ordered_test.go (2245B)
       ---
            1 // Copyright 2024 The Hugo Authors. All rights reserved.
            2 //
            3 // Licensed under the Apache License, Version 2.0 (the "License");
            4 // you may not use this file except in compliance with the License.
            5 // You may obtain a copy of the License at
            6 // http://www.apache.org/licenses/LICENSE-2.0
            7 //
            8 // Unless required by applicable law or agreed to in writing, software
            9 // distributed under the License is distributed on an "AS IS" BASIS,
           10 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
           11 // See the License for the specific language governing permissions and
           12 // limitations under the License.
           13 
           14 package maps
           15 
           16 import (
           17         "testing"
           18 
           19         qt "github.com/frankban/quicktest"
           20 )
           21 
           22 func TestOrdered(t *testing.T) {
           23         c := qt.New(t)
           24 
           25         m := NewOrdered[string, int]()
           26         m.Set("a", 1)
           27         m.Set("b", 2)
           28         m.Set("c", 3)
           29 
           30         c.Assert(m.Keys(), qt.DeepEquals, []string{"a", "b", "c"})
           31         c.Assert(m.Values(), qt.DeepEquals, []int{1, 2, 3})
           32 
           33         v, found := m.Get("b")
           34         c.Assert(found, qt.Equals, true)
           35         c.Assert(v, qt.Equals, 2)
           36 
           37         m.Set("b", 22)
           38         c.Assert(m.Keys(), qt.DeepEquals, []string{"a", "b", "c"})
           39         c.Assert(m.Values(), qt.DeepEquals, []int{1, 22, 3})
           40 
           41         m.Delete("b")
           42 
           43         c.Assert(m.Keys(), qt.DeepEquals, []string{"a", "c"})
           44         c.Assert(m.Values(), qt.DeepEquals, []int{1, 3})
           45 }
           46 
           47 func TestOrderedHash(t *testing.T) {
           48         c := qt.New(t)
           49 
           50         m := NewOrdered[string, int]()
           51         m.Set("a", 1)
           52         m.Set("b", 2)
           53         m.Set("c", 3)
           54 
           55         h1, err := m.Hash()
           56         c.Assert(err, qt.IsNil)
           57 
           58         m.Set("d", 4)
           59 
           60         h2, err := m.Hash()
           61         c.Assert(err, qt.IsNil)
           62 
           63         c.Assert(h1, qt.Not(qt.Equals), h2)
           64 
           65         m = NewOrdered[string, int]()
           66         m.Set("b", 2)
           67         m.Set("a", 1)
           68         m.Set("c", 3)
           69 
           70         h3, err := m.Hash()
           71         c.Assert(err, qt.IsNil)
           72         // Order does not matter.
           73         c.Assert(h1, qt.Equals, h3)
           74 }
           75 
           76 func TestOrderedNil(t *testing.T) {
           77         c := qt.New(t)
           78 
           79         var m *Ordered[string, int]
           80 
           81         m.Set("a", 1)
           82         c.Assert(m.Keys(), qt.IsNil)
           83         c.Assert(m.Values(), qt.IsNil)
           84         v, found := m.Get("a")
           85         c.Assert(found, qt.Equals, false)
           86         c.Assert(v, qt.Equals, 0)
           87         m.Delete("a")
           88         var b bool
           89         m.Range(func(k string, v int) bool {
           90                 b = true
           91                 return true
           92         })
           93         c.Assert(b, qt.Equals, false)
           94         c.Assert(m.Len(), qt.Equals, 0)
           95         c.Assert(m.Clone(), qt.IsNil)
           96         h, err := m.Hash()
           97         c.Assert(err, qt.IsNil)
           98         c.Assert(h, qt.Equals, uint64(0))
           99 }