updates #207
| @@ -98,11 +98,12 @@ func (md Metadata) Del(keys ...string) { | |||||||
| } | } | ||||||
|  |  | ||||||
| // Copy makes a copy of the metadata | // Copy makes a copy of the metadata | ||||||
| func Copy(md Metadata) Metadata { | func Copy(md Metadata, exclude ...string) Metadata { | ||||||
| 	nmd := New(len(md)) | 	nmd := New(len(md)) | ||||||
| 	for key, val := range md { | 	for key, val := range md { | ||||||
| 		nmd.Set(key, val) | 		nmd.Set(key, val) | ||||||
| 	} | 	} | ||||||
|  | 	nmd.Del(exclude...) | ||||||
| 	return nmd | 	return nmd | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -190,3 +190,14 @@ func TestMetadataContext(t *testing.T) { | |||||||
| 		t.Errorf("Expected metadata length 1 got %d", i) | 		t.Errorf("Expected metadata length 1 got %d", i) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | func TestCopy(t *testing.T) { | ||||||
|  | 	md := New(2) | ||||||
|  | 	md.Set("key1", "val1", "key2", "val2") | ||||||
|  | 	nmd := Copy(md, "key2") | ||||||
|  | 	if len(nmd) != 1 { | ||||||
|  | 		t.Fatal("Copy exclude not works") | ||||||
|  | 	} else if nmd["Key1"] != "val1" { | ||||||
|  | 		t.Fatal("Copy exclude not works") | ||||||
|  | 	} | ||||||
|  | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user