Skip to content

Commit

Permalink
feat: (feature/dynamodb/expression) readd IsSet methods
Browse files Browse the repository at this point in the history
These changes were present in an older version of the expression package before it was moved, originally added in aws#494, when the expression library was reintroduce in aws#981 these changes werent included for some reason, but the need for checking if a condition is set or not still exists
  • Loading branch information
Zaq? Wiedmann committed Jul 1, 2021
1 parent eb286a1 commit 15c64fd
Show file tree
Hide file tree
Showing 4 changed files with 82 additions and 0 deletions.
14 changes: 14 additions & 0 deletions feature/dynamodb/expression/condition.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,20 @@ type ConditionBuilder struct {
mode conditionMode
}

// IsSet returns true if the ConditionBuilder is set and returns false
// otherwise. A zero value of a ConditionBuilder returns false.
//
// Example:
//
// var condition expression.ConditionBuilder
// condition.IsSet() // returns false
//
// condition := expression.Equal(expression.Name("foo"), expression.Value(5))
// condition.IsSet() // returns true
func (cb ConditionBuilder) IsSet() bool {
return cb.mode != unsetCond
}

// Equal returns a ConditionBuilder representing the equality clause of the two
// argument OperandBuilders. The resulting ConditionBuilder can be used as a
// part of other Condition Expressions or as an argument to the WithCondition()
Expand Down
27 changes: 27 additions & 0 deletions feature/dynamodb/expression/condition_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,33 @@ const (
invalidConditionOperand = "BuildOperand error"
)

//IsSet
func TestIsSet(t *testing.T) {
cases := []struct {
name string
input ConditionBuilder
expected bool
}{
{
name: "set",
input: Equal(Name("foo"), Value("bar")),
expected: true,
},
{
name: "unset",
input: ConditionBuilder{},
expected: false,
},
}
for _, c := range cases {
t.Run(c.name, func(t *testing.T) {
if actual := c.input.IsSet(); actual != c.expected {
t.Errorf("expected %t, got %t", c.expected, actual)
}
})
}
}

//Compare
func TestCompare(t *testing.T) {
cases := []struct {
Expand Down
14 changes: 14 additions & 0 deletions feature/dynamodb/expression/key_condition.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,20 @@ func KeyEqual(keyBuilder KeyBuilder, valueBuilder ValueBuilder) KeyConditionBuil
}
}

// IsSet returns true if the KeyConditionBuilder is set and returns
// false otherwise. A zero value of a KeyConditionBuilder returns false.
//
// Example:
//
// var keyCondition expression.KeyConditionBuilder
// keyCondition.IsSet() // returns false
//
// keyCondition := expression.KeyEqual(expression.Key("foo"), expression.Value(5))
// keyCondition.IsSet() // returns true
func (kcb KeyConditionBuilder) IsSet() bool {
return kcb.mode != unsetKeyCond
}

// Equal returns a KeyConditionBuilder representing the equality clause of
// the two argument OperandBuilders. The resulting KeyConditionBuilder can be
// used as a part of other Key Condition Expressions or as an argument to the
Expand Down
27 changes: 27 additions & 0 deletions feature/dynamodb/expression/key_condition_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,33 @@ const (
invalidKeyConditionFormat = "buildKeyCondition error: invalid key condition constructed"
)

//IsSet
func TestKeyIsSet(t *testing.T) {
cases := []struct {
name string
input KeyConditionBuilder
expected bool
}{
{
name: "set",
input: KeyEqual(Key("foo"), Value("bar")),
expected: true,
},
{
name: "unset",
input: KeyConditionBuilder{},
expected: false,
},
}
for _, c := range cases {
t.Run(c.name, func(t *testing.T) {
if actual := c.input.IsSet(); actual != c.expected {
t.Errorf("expected %t, got %t", c.expected, actual)
}
})
}
}

func TestKeyCompare(t *testing.T) {
cases := []struct {
name string
Expand Down

0 comments on commit 15c64fd

Please sign in to comment.