package com.anuragkapur.ctci.recursionanddp;
import org.junit.Assert;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
public class Prob9_4_AllSubsetsTest {
@Test
public void testComputeSubsets1() throws Exception {
Prob9_4_AllSubsets solution = new Prob9_4_AllSubsets();
List<Integer> set = new ArrayList<>();
set.add(1);
set.add(2);
List<List<Integer>> subsets = solution.computeSubsets(set);
StringBuilder builder = new StringBuilder();
builder.append("{");
for(List<Integer> subset : subsets) {
builder.append("{");
int count = subset.size();
for(Integer element : subset) {
count --;
builder.append(element);
if (count > 0)
builder.append(",");
}
builder.append("}");
}
builder.append("}");
Assert.assertEquals("{{2}{}{2,1}{1}}", builder.toString());
}
@Test
public void testComputeSubsets2() throws Exception {
Prob9_4_AllSubsets solution = new Prob9_4_AllSubsets();
List<Integer> set = new ArrayList<>();
set.add(1);
set.add(2);
set.add(3);
List<List<Integer>> subsets = solution.computeSubsets(set);
StringBuilder builder = new StringBuilder();
builder.append("{");
for(List<Integer> subset : subsets) {
builder.append("{");
int count = subset.size();
for(Integer element : subset) {
count --;
builder.append(element);
if (count > 0)
builder.append(",");
}
builder.append("}");
}
builder.append("}");
Assert.assertEquals("{{3}{}{3,2}{2}{3,1}{1}{3,2,1}{2,1}}", builder.toString());
}
@Test
public void testSubsets1() throws Exception {
int a[] = {1,2};
Assert.assertEquals("[[2], [], [2, 1], [1]]", new Prob9_4_AllSubsets().subsets(a, 0, a.length-1).toString());
}
@Test
public void testSubsets2() throws Exception {
int a[] = {1,2,3};
Assert.assertEquals("[[3], [], [3, 2], [2], [3, 1], [1], [3, 2, 1], [2, 1]]", new Prob9_4_AllSubsets().subsets(a, 0, a.length-1).toString());
}
}