diff options
author | Ben Johnson <benbjohnson@yahoo.com> | 2019-03-06 18:37:20 -0700 |
---|---|---|
committer | Ben Johnson <benbjohnson@yahoo.com> | 2019-03-06 18:37:20 -0700 |
commit | 6c9db58c76b31424276cb70595c5208aa6c015ae (patch) | |
tree | fdcdb01e938416a2de9aa1646844aa680324e5fb | |
parent | Merge pull request #7 from benbjohnson/sorted-map-builder (diff) | |
download | pds-6c9db58c76b31424276cb70595c5208aa6c015ae.tar.gz pds-6c9db58c76b31424276cb70595c5208aa6c015ae.tar.xz |
Add ListBuilder.Len()
This commit adds a method to check the current length of a list
on a `ListBuilder`. This allows the length to be checked without
marking the next builder change as immutable.
-rw-r--r-- | immutable.go | 5 | ||||
-rw-r--r-- | immutable_test.go | 4 |
2 files changed, 8 insertions, 1 deletions
diff --git a/immutable.go b/immutable.go index e8fac90..c1a8aef 100644 --- a/immutable.go +++ b/immutable.go @@ -246,6 +246,11 @@ func (b *ListBuilder) List() *List { return list } +// Len returns the number of elements in the underlying list. +func (b *ListBuilder) Len() int { + return b.list.Len() +} + // Get returns the value at the given index. Similar to slices, this method will // panic if index is below zero or is greater than or equal to the list size. func (b *ListBuilder) Get(index int) interface{} { diff --git a/immutable_test.go b/immutable_test.go index 9c3f548..c6dfc13 100644 --- a/immutable_test.go +++ b/immutable_test.go @@ -274,7 +274,9 @@ func (l *TList) Slice(start, end int) { // Validate returns an error if the slice and List are different. func (l *TList) Validate() error { - if got, exp := len(l.std), l.im.Len(); got != exp { + if got, exp := l.im.Len(), len(l.std); got != exp { + return fmt.Errorf("Len()=%v, expected %d", got, exp) + } else if got, exp := l.builder.Len(), len(l.std); got != exp { return fmt.Errorf("Len()=%v, expected %d", got, exp) } |