add test for context iterate

This commit is contained in:
Arktische 2021-11-13 13:23:39 +08:00
parent 388bc45569
commit 9401604c4e
2 changed files with 26 additions and 10 deletions

View File

@ -260,16 +260,6 @@ func (c *Context) Get(key string) (value interface{}, exists bool) {
return
}
// Do iterates the key/value pairs stored in c.Keys and executes the callback.
// It does nothing if c.Keys is nil or empty.
func (c *Context) Do(fn func(key string, value interface{})) {
c.mu.RLock()
for k, v := range c.Keys {
fn(k,v)
}
c.mu.RUnlock()
}
// MustGet returns the value for the given key if it exists, otherwise it panics.
func (c *Context) MustGet(key string) interface{} {
if value, exists := c.Get(key); exists {
@ -382,6 +372,16 @@ func (c *Context) GetStringMapStringSlice(key string) (smss map[string][]string)
return
}
// Iterate iterates the key/value pairs stored in c.Keys and executes the callback.
// It does nothing if c.Keys is nil or empty.
func (c *Context) Iterate(fn func(key string, value interface{})) {
c.mu.RLock()
for k, v := range c.Keys {
fn(k, v)
}
c.mu.RUnlock()
}
/************************************/
/************ INPUT DATA ************/
/************************************/

View File

@ -222,6 +222,22 @@ func TestContextSetGetValues(t *testing.T) {
assert.Exactly(t, c.MustGet("intInterface").(int), 1)
}
func TestContextIterate(t *testing.T) {
c, _ := CreateTestContext(httptest.NewRecorder())
c.Set("string", "this is a string")
c.Set("int32", int32(-42))
c.Set("int64", int64(42424242424242))
c.Set("uint64", uint64(42))
c.Set("float32", float32(4.2))
c.Set("float64", 4.2)
var a interface{} = 1
c.Set("intInterface", a)
c.Iterate(func(key string, value interface{}) {
assert.Exactly(t, c.MustGet(key), value)
})
}
func TestContextGetString(t *testing.T) {
c, _ := CreateTestContext(httptest.NewRecorder())
c.Set("string", "this is a string")