### Question:
LhsUtils { public static List<BitSet> generateLhsSubsets(BitSet lhs) { List<BitSet> results = new LinkedList<>(); for (int i = lhs.nextSetBit(0); i >= 0; i = lhs.nextSetBit(i + 1)) { BitSet subset = (BitSet) lhs.clone(); subset.flip(i); if (subset.cardinality() > 0) { results.add(subset); } } return results; }  static void addSubsetsTo(FDTreeElement.InternalFunctionalDependency fd, Collection<FDTreeElement.InternalFunctionalDependency> collection); static List<BitSet> generateLhsSubsets(BitSet lhs); static List<BitSet> generateLhsSupersets(BitSet lhs, int numAttributes);  }### Answer:
@Test public void testGenerateLhsSubsetsDoesNotReturnAnythingIfThereAreNoSubsets() { List<BitSet> results = LhsUtils.generateLhsSubsets(new BitSet(64)); Assert.assertEquals(0, results.size()); }
@Test public void testGenerateLhsSubsetsDoesGenerateSetsWithOneLessAttribute() { BitSet parent = generateLhs(64, new int[] {1, 2, 3}); List<BitSet> results = LhsUtils.generateLhsSubsets(parent); Assert.assertEquals(3, results.size()); Assert.assertTrue(results.contains(generateLhs(64, new int[] {1, 2}))); Assert.assertTrue(results.contains(generateLhs(64, new int[] {2, 3}))); Assert.assertTrue(results.contains(generateLhs(64, new int[] {1, 3}))); }