Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions src/main/java/io/unlaunch/UnlaunchFeature.java
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,9 @@ public String getVariation() {
* @return {@link Map} of Key-Value configuration for the evaluated variation.
*/
public Map<String, String> getVariationConfigAsMap() {
if (properties == null || properties.isEmpty()) {
return new HashMap<>();
}
return new HashMap<>(properties);
}

Expand All @@ -77,6 +80,9 @@ public Map<String, String> getVariationConfigAsMap() {
* @return {@link UnlaunchDynamicConfig} for configuration (Key-Value)
*/
public UnlaunchDynamicConfig getVariationConfig() {
if (properties == null || properties.isEmpty()) {
new DefaultUnlaunchDynamicConfig(null);
}
return new DefaultUnlaunchDynamicConfig(Collections.unmodifiableMap(properties));
}

Expand Down Expand Up @@ -104,6 +110,4 @@ public static UnlaunchFeature create(String flagKey, String variationKey, Map<St
public static UnlaunchFeature create(String flagKey, String variationKey, Map<String, String> properties) {
return new UnlaunchFeature(flagKey, variationKey, "", properties);
}


}
200 changes: 200 additions & 0 deletions src/test/java/io/unlaunch/engine/SetAttributeTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,65 @@ public void All_Of_WhenUserSetIsEmpty_ShouldNotMatch() {
OffVariation();
}

// Not All Of
@Test
public void Not_All_Of_EqualSets_ShouldNotMatch() {
Set<String> userSet = new HashSet();
userSet.add("user1");
userSet.add("user2");

List<String> values = new ArrayList<>();
values.add("user2");
values.add("user1");

setCondition(Operator.DOES_NOT_HAVE_ALL_OF, userSet, values);

OffVariation();
}

@Test
public void Not_All_Of_UserSetIsSuperset_ShouldNotMatch() {
Set<String> userSet = new HashSet();
userSet.add("user3");
userSet.add("user1");
userSet.add("user2");

List<String> values = new ArrayList<>();
values.add("user2");
values.add("user1");

setCondition(Operator.DOES_NOT_HAVE_ALL_OF, userSet, values);

OffVariation();
}

@Test
public void Not_All_Of_WhenUserSetIsSubset_ShouldMatch() {
Set<String> userSet = new HashSet();
userSet.add("user2");

List<String> values = new ArrayList<>();
values.add("user2");
values.add("user1");

setCondition(Operator.DOES_NOT_HAVE_ALL_OF, userSet, values);

OnVariation();
}

@Test
public void Not_All_Of_WhenUserSetIsEmpty_ShouldMatch() {
Set<String> userSet = new HashSet();

List<String> values = new ArrayList<>();
values.add("user2");
values.add("user1");

setCondition(Operator.DOES_NOT_HAVE_ALL_OF, userSet, values);

OnVariation();
}

// Any Of
@Test
public void Any_Of_EqualSets_ShouldMatch() {
Expand Down Expand Up @@ -209,6 +268,99 @@ public void Any_Of_UserSetIsEmpty_ShouldNotMatch() {
OffVariation();
}

// Not Any Of
@Test
public void Not_Any_Of_EqualSets_ShouldNotMatch() {
Set<String> userSet = new HashSet();
userSet.add("1");
userSet.add("2");

List<String> values = new ArrayList<>();
values.add("1");
values.add("2");

setCondition(Operator.DOES_NOT_HAVE_ANY_OF, userSet, values);

OffVariation();
}

@Test
public void Not_Any_Of_UserSetIsSuperset_ShouldNotMatch() {
Set<String> userSet = new HashSet();
userSet.add("1");
userSet.add("3");
userSet.add("2");

List<String> values = new ArrayList<>();
values.add("1");
values.add("2");

setCondition(Operator.DOES_NOT_HAVE_ANY_OF, userSet, values);

OffVariation();
}

@Test
public void Not_Any_Of_UserSetIsSubSet_ShouldNotMatch() {
Set<String> userSet = new HashSet();
userSet.add("2");

List<String> values = new ArrayList<>();
values.add("1");
values.add("2");

setCondition(Operator.DOES_NOT_HAVE_ANY_OF, userSet, values);

OffVariation();
}

@Test
public void Not_Any_Of_UserSetIsSubSetUnordered_ShouldNotMatch() {
Set<String> userSet = new HashSet();
userSet.add("1");
userSet.add("2");
userSet.add("3");
userSet.add("4");

List<String> values = new ArrayList<>();
values.add("3");
values.add("2");
values.add("1");
values.add("10");

setCondition(Operator.DOES_NOT_HAVE_ANY_OF, userSet, values);

OffVariation();
}

@Test
public void Not_Any_Of_UserSetIsDisjoint_ShouldMatch() {
Set<String> userSet = new HashSet();
userSet.add("4");
userSet.add("5");

List<String> values = new ArrayList<>();
values.add("1");
values.add("2");
values.add("3");

setCondition(Operator.DOES_NOT_HAVE_ANY_OF, userSet, values);

OnVariation();
}

@Test
public void Not_Any_Of_UserSetIsEmpty_ShouldMatch() {
Set<String> userSet = new HashSet();

List<String> values = new ArrayList<>();
values.add("1");

setCondition(Operator.DOES_NOT_HAVE_ANY_OF, userSet, values);

OnVariation();
}

// Part Of
@Test
public void Part_Of_WhenEqualSets_ShouldMatch() {
Expand Down Expand Up @@ -257,6 +409,54 @@ public void Part_Of_WhenUserSetIsSubset_ShouldMatch() {
OnVariation();
}

// Not Part Of
@Test
public void Not_Part_Of_WhenEqualSets_ShouldNotMatch() {
Set<String> userSet = new HashSet();
userSet.add("1");
userSet.add("2");

List<String> values = new ArrayList<>();
values.add("2");
values.add("1");

setCondition(Operator.IS_NOT_PART_OF, userSet, values);

OffVariation();
}

@Test
public void Not_Part_Of_WhenUserSetIsSuperset_ShouldMatch() {
Set<String> userSet = new HashSet();
userSet.add("1");
userSet.add("2");
userSet.add("3");

List<String> values = new ArrayList<>();
values.add("2");
values.add("1");

setCondition(Operator.IS_NOT_PART_OF, userSet, values);

OffVariation();
}

@Test
public void Not_Part_Of_WhenUserSetIsSubset_ShouldNotMatch() {
Set<String> userSet = new HashSet();
userSet.add("1");
userSet.add("2");

List<String> values = new ArrayList<>();
values.add("2");
values.add("1");
values.add("3");

setCondition(Operator.IS_NOT_PART_OF, userSet, values);

OffVariation();
}

// Equals
@Test
public void Equals_EqualSets_ShouldMatch() {
Expand Down