| // Copyright IBM Corp. 2014, 2026 | |
| // SPDX-License-Identifier: BUSL-1.1 | |
| package states | |
| import ( | |
| "testing" | |
| ) | |
| func TestResourceInstanceDeposeCurrentObject(t *testing.T) { | |
| t.Run("nil resource", func(t *testing.T) { | |
| var nilRI *ResourceInstance | |
| dk := nilRI.deposeCurrentObject(NotDeposed) | |
| t.Logf("deposedKey (nil receiver) is %q", dk) | |
| if dk != NotDeposed { | |
| t.Fatalf("expected NotDeposed for nil receiver, got %q", dk) | |
| } | |
| }) | |
| obj := &ResourceInstanceObjectSrc{ | |
| // Empty for the sake of this test, because we're just going to | |
| // compare by pointer below anyway. | |
| } | |
| is := NewResourceInstance() | |
| is.Current = obj | |
| var dk DeposedKey | |
| t.Run("first depose", func(t *testing.T) { | |
| dk = is.deposeCurrentObject(NotDeposed) // dk is randomly-generated but should be eight characters long | |
| t.Logf("deposedKey is %q", dk) | |
| if got := is.Current; got != nil { | |
| t.Errorf("current is %#v; want nil", got) | |
| } | |
| if got, want := is.Deposed[dk], obj; got != want { | |
| t.Errorf("deposed object pointer is %#v; want %#v", got, want) | |
| } | |
| if got, want := len(is.Deposed), 1; got != want { | |
| t.Errorf("wrong len(is.Deposed) %d; want %d", got, want) | |
| } | |
| if got, want := len(dk), 8; got != want { | |
| t.Errorf("wrong len(deposedkey) %d; want %d", got, want) | |
| } | |
| }) | |
| t.Run("second depose", func(t *testing.T) { | |
| notDK := is.deposeCurrentObject(NotDeposed) | |
| if notDK != NotDeposed { | |
| t.Errorf("got deposedKey %q; want NotDeposed", notDK) | |
| } | |
| // Make sure we really did abort early, and haven't corrupted the | |
| // state somehow. | |
| if got := is.Current; got != nil { | |
| t.Errorf("current is %#v; want nil", got) | |
| } | |
| if got, want := is.Deposed[dk], obj; got != want { | |
| t.Errorf("deposed object pointer is %#v; want %#v", got, want) | |
| } | |
| if got, want := len(is.Deposed), 1; got != want { | |
| t.Errorf("wrong len(is.Deposed) %d; want %d", got, want) | |
| } | |
| if got, want := len(dk), 8; got != want { | |
| t.Errorf("wrong len(deposedkey) %d; want %d", got, want) | |
| } | |
| }) | |
| } |