| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- package store
- import (
- "testing"
- "time"
- )
- import "github.com/coreos/etcd/Godeps/_workspace/src/github.com/stretchr/testify/assert"
- func TestNodeExternClone(t *testing.T) {
- var eNode *NodeExtern
- if g := eNode.Clone(); g != nil {
- t.Fatalf("nil.Clone=%v, want nil", g)
- }
- const (
- key string = "/foo/bar"
- ttl int64 = 123456789
- ci uint64 = 123
- mi uint64 = 321
- )
- var (
- val = "some_data"
- valp = &val
- exp = time.Unix(12345, 67890)
- expp = &exp
- )
- eNode = &NodeExtern{
- Key: key,
- TTL: ttl,
- CreatedIndex: ci,
- ModifiedIndex: mi,
- Value: valp,
- Expiration: expp,
- }
- gNode := eNode.Clone()
- // Check the clone is as expected
- assert.Equal(t, gNode.Key, key)
- assert.Equal(t, gNode.TTL, ttl)
- assert.Equal(t, gNode.CreatedIndex, ci)
- assert.Equal(t, gNode.ModifiedIndex, mi)
- // values should be the same
- assert.Equal(t, *gNode.Value, val)
- assert.Equal(t, *gNode.Expiration, exp)
- // but pointers should differ
- if gNode.Value == eNode.Value {
- t.Fatalf("expected value pointers to differ, but got same!")
- }
- if gNode.Expiration == eNode.Expiration {
- t.Fatalf("expected expiration pointers to differ, but got same!")
- }
- // Original should be the same
- assert.Equal(t, eNode.Key, key)
- assert.Equal(t, eNode.TTL, ttl)
- assert.Equal(t, eNode.CreatedIndex, ci)
- assert.Equal(t, eNode.ModifiedIndex, mi)
- assert.Equal(t, eNode.Value, valp)
- assert.Equal(t, eNode.Expiration, expp)
- // Change the clone and ensure the original is not affected
- gNode.Key = "/baz"
- gNode.TTL = 0
- assert.Equal(t, eNode.Key, key)
- assert.Equal(t, eNode.TTL, ttl)
- assert.Equal(t, eNode.CreatedIndex, ci)
- assert.Equal(t, eNode.ModifiedIndex, mi)
- // Change the original and ensure the clone is not affected
- eNode.Key = "/wuf"
- assert.Equal(t, eNode.Key, "/wuf")
- assert.Equal(t, gNode.Key, "/baz")
- }
|