/*
 * ARX Data Anonymization Tool
 * Copyright 2012 - 2024 Fabian Prasser and contributors
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.deidentifier.arx.test;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Collection;

import org.deidentifier.arx.ARXConfiguration;
import org.deidentifier.arx.AttributeType.Hierarchy;
import org.deidentifier.arx.Data;
import org.deidentifier.arx.DataSubset;
import org.deidentifier.arx.criteria.DPresence;
import org.deidentifier.arx.criteria.HierarchicalDistanceTCloseness;
import org.deidentifier.arx.criteria.KAnonymity;
import org.deidentifier.arx.criteria.RecursiveCLDiversity;
import org.deidentifier.arx.metric.Metric;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

/**
 * Tests of combinations of privacy models.
 *
 * @author Fabian Prasser
 * @author Florian Kohlmayer
 */
@RunWith(Parameterized.class)
public class TestAnonymizationCombinations extends AbstractAnonymizationTest {
    
    /**
     * Returns the test cases.
     *
     * @return
     * @throws IOException
     */
    @Parameters(name = "{index}:[{0}]")
    public static Collection<Object[]> cases() throws IOException {
        return Arrays.asList(new Object[][] {
                                              /* 0 */{ new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/adult.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/adult_subset.csv", StandardCharsets.UTF_8, ';')))), "occupation", "./data/adult.csv", 37223.2491248282, new int[] { 1, 4, 1, 1, 1, 2, 2, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/adult.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/adult_subset.csv", StandardCharsets.UTF_8, ';')))), "occupation", "./data/adult.csv", 35461.300017243804, new int[] { 0, 2, 1, 2, 3, 2, 2, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("occupation", 0.2, Hierarchy.create("./data/adult_hierarchy_occupation.csv", StandardCharsets.UTF_8, ';'))).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/adult.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/adult_subset.csv", StandardCharsets.UTF_8, ';')))), "occupation", "./data/adult.csv", 42481.619746031596, new int[] { 1, 4, 1, 1, 3, 2, 2, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("occupation", 0.2, Hierarchy.create("./data/adult_hierarchy_occupation.csv", StandardCharsets.UTF_8, ';'))), "occupation", "./data/adult.csv", 398400.0741806447, new int[] { 0, 4, 1, 1, 3, 2, 2, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)), "occupation", "./data/adult.csv", 324620.5269918692, new int[] { 1, 1, 1, 1, 3, 2, 2, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new HierarchicalDistanceTCloseness("occupation", 0.2, Hierarchy.create("./data/adult_hierarchy_occupation.csv", StandardCharsets.UTF_8, ';'))).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/adult.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/adult_subset.csv", StandardCharsets.UTF_8, ';')))), "occupation", "./data/adult.csv", 42481.619746031596, new int[] { 1, 4, 1, 1, 3, 2, 2, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new HierarchicalDistanceTCloseness("occupation", 0.2, Hierarchy.create("./data/adult_hierarchy_occupation.csv", StandardCharsets.UTF_8, ';'))), "occupation", "./data/adult.csv", 398400.0741806447, new int[] { 0, 4, 1, 1, 3, 2, 2, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new RecursiveCLDiversity("occupation", 4.0, 5)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/adult.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/adult_subset.csv", StandardCharsets.UTF_8, ';')))), "occupation", "./data/adult.csv", 39177.7411830619, new int[] { 1, 4, 1, 1, 2, 2, 2, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new RecursiveCLDiversity("occupation", 4.0, 5)), "occupation", "./data/adult.csv", 324620.5269918692, new int[] { 1, 1, 1, 1, 3, 2, 2, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/cup.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/cup_subset.csv", StandardCharsets.UTF_8, ';')))), "RAMNTALL", "./data/cup.csv", 195829.0291224279, new int[] { 5, 4, 1, 0, 1, 4, 4 }, false) },
                                              /* 10 */{ new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/cup.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/cup_subset.csv", StandardCharsets.UTF_8, ';')))), "RAMNTALL", "./data/cup.csv", 195829.0291224279, new int[] { 5, 4, 1, 0, 1, 3, 4 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("RAMNTALL", 0.2, Hierarchy.create("./data/cup_hierarchy_RAMNTALL.csv", StandardCharsets.UTF_8, ';'))).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/cup.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/cup_subset.csv", StandardCharsets.UTF_8, ';')))), "RAMNTALL", "./data/cup.csv", 195829.0291224279, new int[] { 5, 4, 1, 0, 1, 3, 4 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("RAMNTALL", 0.2, Hierarchy.create("./data/cup_hierarchy_RAMNTALL.csv", StandardCharsets.UTF_8, ';'))), "RAMNTALL", "./data/cup.csv", 2023751.243421626, new int[] { 4, 4, 1, 2, 1, 4, 4 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)), "RAMNTALL", "./data/cup.csv", 1961244.4822559545, new int[] { 4, 4, 1, 1, 1, 4, 4 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new HierarchicalDistanceTCloseness("RAMNTALL", 0.2, Hierarchy.create("./data/cup_hierarchy_RAMNTALL.csv", StandardCharsets.UTF_8, ';'))).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/cup.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/cup_subset.csv", StandardCharsets.UTF_8, ';')))), "RAMNTALL", "./data/cup.csv", 195829.0291224279, new int[] { 5, 4, 1, 0, 1, 4, 4 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new HierarchicalDistanceTCloseness("RAMNTALL", 0.2, Hierarchy.create("./data/cup_hierarchy_RAMNTALL.csv", StandardCharsets.UTF_8, ';'))), "RAMNTALL", "./data/cup.csv", 2023751.243421626, new int[] { 4, 4, 1, 2, 1, 4, 4 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new RecursiveCLDiversity("RAMNTALL", 4.0, 5)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/cup.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/cup_subset.csv", StandardCharsets.UTF_8, ';')))), "RAMNTALL", "./data/cup.csv", 195829.0291224279, new int[] { 5, 4, 1, 0, 1, 3, 4 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new RecursiveCLDiversity("RAMNTALL", 4.0, 5)), "RAMNTALL", "./data/cup.csv", 1961244.4822559545, new int[] { 4, 4, 1, 1, 1, 4, 4 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/fars.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/fars_subset.csv", StandardCharsets.UTF_8, ';')))), "istatenum", "./data/fars.csv", 142414.2491462392, new int[] { 1, 2, 3, 3, 1, 2, 2 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/fars.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/fars_subset.csv", StandardCharsets.UTF_8, ';')))), "istatenum", "./data/fars.csv", 121297.9782432485, new int[] { 5, 2, 2, 0, 1, 2, 0 }, false) },
                                              /* 20 */{ new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("istatenum", 0.2, Hierarchy.create("./data/fars_hierarchy_istatenum.csv", StandardCharsets.UTF_8, ';'))).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/fars.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/fars_subset.csv", StandardCharsets.UTF_8, ';')))), "istatenum", "./data/fars.csv", 151844.6761858994, new int[] { 2, 2, 3, 3, 1, 2, 2 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("istatenum", 0.2, Hierarchy.create("./data/fars_hierarchy_istatenum.csv", StandardCharsets.UTF_8, ';'))), "istatenum", "./data/fars.csv", 1429434.050891089, new int[] { 1, 2, 3, 3, 1, 2, 2 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)), "istatenum", "./data/fars.csv", 1201007.0880104562, new int[] { 0, 2, 3, 3, 1, 2, 2 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new HierarchicalDistanceTCloseness("istatenum", 0.2, Hierarchy.create("./data/fars_hierarchy_istatenum.csv", StandardCharsets.UTF_8, ';'))).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/fars.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/fars_subset.csv", StandardCharsets.UTF_8, ';')))), "istatenum", "./data/fars.csv", 151844.6761858994, new int[] { 2, 2, 3, 3, 1, 2, 2 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new HierarchicalDistanceTCloseness("istatenum", 0.2, Hierarchy.create("./data/fars_hierarchy_istatenum.csv", StandardCharsets.UTF_8, ';'))), "istatenum", "./data/fars.csv", 1429434.050891089, new int[] { 1, 2, 3, 3, 1, 2, 2 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new RecursiveCLDiversity("istatenum", 4.0, 5)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/fars.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/fars_subset.csv", StandardCharsets.UTF_8, ';')))), "istatenum", "./data/fars.csv", 142414.2491462392, new int[] { 1, 2, 3, 3, 1, 2, 2 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new RecursiveCLDiversity("istatenum", 4.0, 5)), "istatenum", "./data/fars.csv", 1201007.0880104562, new int[] { 0, 2, 3, 3, 1, 2, 2 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/atus.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/atus_subset.csv", StandardCharsets.UTF_8, ';')))), "Highest level of school completed", "./data/atus.csv", 400542.9546949434, new int[] { 1, 0, 0, 2, 2, 2, 2, 2 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/atus.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/atus_subset.csv", StandardCharsets.UTF_8, ';')))), "Highest level of school completed", "./data/atus.csv", 400542.9546949434, new int[] { 1, 0, 0, 2, 2, 2, 2, 2 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("Highest level of school completed", 0.2, Hierarchy.create("./data/atus_hierarchy_Highest level of school completed.csv", StandardCharsets.UTF_8, ';'))).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/atus.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/atus_subset.csv", StandardCharsets.UTF_8, ';')))), "Highest level of school completed", "./data/atus.csv", 574838.3678280927, new int[] { 0, 5, 0, 2, 2, 2, 2, 2 }, false) },
                                              /* 30 */{ new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("Highest level of school completed", 0.2, Hierarchy.create("./data/atus_hierarchy_Highest level of school completed.csv", StandardCharsets.UTF_8, ';'))), "Highest level of school completed", "./data/atus.csv", 5760138.103541854, new int[] { 0, 5, 0, 2, 2, 2, 2, 2 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)), "Highest level of school completed", "./data/atus.csv", 3478926.4429797237, new int[] { 0, 0, 0, 2, 2, 2, 2, 2 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new HierarchicalDistanceTCloseness("Highest level of school completed", 0.2, Hierarchy.create("./data/atus_hierarchy_Highest level of school completed.csv", StandardCharsets.UTF_8, ';'))).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/atus.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/atus_subset.csv", StandardCharsets.UTF_8, ';')))), "Highest level of school completed", "./data/atus.csv", 574838.3678280927, new int[] { 0, 5, 0, 2, 2, 2, 2, 2 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new HierarchicalDistanceTCloseness("Highest level of school completed", 0.2, Hierarchy.create("./data/atus_hierarchy_Highest level of school completed.csv", StandardCharsets.UTF_8, ';'))), "Highest level of school completed", "./data/atus.csv", 5760138.103541854, new int[] { 0, 5, 0, 2, 2, 2, 2, 2 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new RecursiveCLDiversity("Highest level of school completed", 4.0, 5)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/atus.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/atus_subset.csv", StandardCharsets.UTF_8, ';')))), "Highest level of school completed", "./data/atus.csv", 490137.6908435117, new int[] { 0, 4, 0, 2, 2, 2, 2, 2 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new RecursiveCLDiversity("Highest level of school completed", 4.0, 5)), "Highest level of school completed", "./data/atus.csv", 4912828.240033204, new int[] { 0, 4, 0, 2, 2, 2, 2, 2 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/ihis.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/ihis_subset.csv", StandardCharsets.UTF_8, ';')))), "EDUC", "./data/ihis.csv", 1287579.5821546589, new int[] { 0, 0, 0, 3, 4, 1, 0, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/ihis.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/ihis_subset.csv", StandardCharsets.UTF_8, ';')))), "EDUC", "./data/ihis.csv", 1287579.5821546589, new int[] { 0, 0, 0, 3, 4, 1, 0, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("EDUC", 0.2, Hierarchy.create("./data/ihis_hierarchy_EDUC.csv", StandardCharsets.UTF_8, ';'))).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/ihis.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/ihis_subset.csv", StandardCharsets.UTF_8, ';')))), "EDUC", "./data/ihis.csv", 1589251.3824409053, new int[] { 0, 0, 1, 3, 4, 2, 0, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("EDUC", 0.2, Hierarchy.create("./data/ihis_hierarchy_EDUC.csv", StandardCharsets.UTF_8, ';'))), "EDUC", "./data/ihis.csv", 1.4719292081181683E7, new int[] { 0, 0, 0, 3, 4, 2, 0, 1 }, false) },
                                              /* 40 */{ new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)), "EDUC", "./data/ihis.csv", 9503511.261799559, new int[] { 0, 0, 2, 3, 0, 2, 0, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new HierarchicalDistanceTCloseness("EDUC", 0.2, Hierarchy.create("./data/ihis_hierarchy_EDUC.csv", StandardCharsets.UTF_8, ';'))).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/ihis.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/ihis_subset.csv", StandardCharsets.UTF_8, ';')))), "EDUC", "./data/ihis.csv", 1589251.3824409053, new int[] { 0, 0, 1, 3, 4, 2, 0, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new HierarchicalDistanceTCloseness("EDUC", 0.2, Hierarchy.create("./data/ihis_hierarchy_EDUC.csv", StandardCharsets.UTF_8, ';'))), "EDUC", "./data/ihis.csv", 1.4719292081181683E7, new int[] { 0, 0, 0, 3, 4, 2, 0, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new RecursiveCLDiversity("EDUC", 4.0, 5)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/ihis.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/ihis_subset.csv", StandardCharsets.UTF_8, ';')))), "EDUC", "./data/ihis.csv", 1405067.4080803706, new int[] { 0, 0, 1, 3, 4, 1, 0, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.0d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new RecursiveCLDiversity("EDUC", 4.0, 5)), "EDUC", "./data/ihis.csv", 1.2258628558792587E7, new int[] { 0, 0, 0, 3, 3, 2, 0, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new KAnonymity(5)), "occupation", "./data/adult.csv", 180132.40848244698, new int[] { 0, 0, 1, 1, 2, 2, 2, 0 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new KAnonymity(5)), "RAMNTALL", "./data/cup.csv", 1252060.0068011207, new int[] { 2, 4, 1, 0, 0, 4, 4 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new KAnonymity(5)), "istatenum", "./data/fars.csv", 560028.8197749631, new int[] { 0, 0, 2, 3, 0, 0, 0 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new KAnonymity(5)), "Highest level of school completed", "./data/atus.csv", 1337026.078203367, new int[] { 0, 1, 0, 0, 0, 0, 1, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new KAnonymity(5)), "EDUC", "./data/ihis.csv", 5823479.072286698, new int[] { 0, 0, 0, 2, 0, 1, 0, 1 }, false) },
                                              /* 50 */{ new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/adult.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/adult_subset.csv", StandardCharsets.UTF_8, ';')))), "occupation", "./data/adult.csv", 25247.843728345997, new int[] { 1, 0, 1, 2, 2, 2, 2, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("occupation", 0.2, Hierarchy.create("./data/adult_hierarchy_occupation.csv", StandardCharsets.UTF_8, ';'))).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/adult.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/adult_subset.csv", StandardCharsets.UTF_8, ';')))), "occupation", "./data/adult.csv", 40089.9423426752, new int[] { 1, 4, 0, 1, 3, 2, 2, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("occupation", 0.2, Hierarchy.create("./data/adult_hierarchy_occupation.csv", StandardCharsets.UTF_8, ';'))), "occupation", "./data/adult.csv", 367390.5779876774, new int[] { 1, 4, 0, 0, 3, 1, 2, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new RecursiveCLDiversity("occupation", 4.0, 5)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/adult.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/adult_subset.csv", StandardCharsets.UTF_8, ';')))), "occupation", "./data/adult.csv", 28551.7222913157, new int[] { 1, 0, 1, 2, 3, 2, 2, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new RecursiveCLDiversity("occupation", 4.0, 5)), "occupation", "./data/adult.csv", 198181.4042332967, new int[] { 1, 0, 1, 1, 2, 2, 2, 0 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/cup.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/cup_subset.csv", StandardCharsets.UTF_8, ';')))), "RAMNTALL", "./data/cup.csv", 140991.2852327497, new int[] { 3, 4, 0, 2, 0, 2, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("RAMNTALL", 0.2, Hierarchy.create("./data/cup_hierarchy_RAMNTALL.csv", StandardCharsets.UTF_8, ';'))).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/cup.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/cup_subset.csv", StandardCharsets.UTF_8, ';')))), "RAMNTALL", "./data/cup.csv", 166085.6968687116, new int[] { 4, 4, 1, 2, 0, 2, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("RAMNTALL", 0.2, Hierarchy.create("./data/cup_hierarchy_RAMNTALL.csv", StandardCharsets.UTF_8, ';'))), "RAMNTALL", "./data/cup.csv", 1377036.0221522974, new int[] { 2, 4, 1, 2, 0, 3, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new RecursiveCLDiversity("RAMNTALL", 4.0, 5)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/cup.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/cup_subset.csv", StandardCharsets.UTF_8, ';')))), "RAMNTALL", "./data/cup.csv", 140991.2852327497, new int[] { 3, 4, 0, 2, 0, 2, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new RecursiveCLDiversity("RAMNTALL", 4.0, 5)), "RAMNTALL", "./data/cup.csv", 1202354.6618344877, new int[] { 2, 4, 1, 0, 0, 3, 1 }, false) },
                                              /* 60 */{ new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/fars.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/fars_subset.csv", StandardCharsets.UTF_8, ';')))), "istatenum", "./data/fars.csv", 88717.72875464789, new int[] { 2, 0, 3, 3, 0, 0, 0 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("istatenum", 0.2, Hierarchy.create("./data/fars_hierarchy_istatenum.csv", StandardCharsets.UTF_8, ';'))).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/fars.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/fars_subset.csv", StandardCharsets.UTF_8, ';')))), "istatenum", "./data/fars.csv", 121171.9073113775, new int[] { 5, 2, 1, 1, 0, 2, 0 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("istatenum", 0.2, Hierarchy.create("./data/fars_hierarchy_istatenum.csv", StandardCharsets.UTF_8, ';'))), "istatenum", "./data/fars.csv", 913268.7198249138, new int[] { 2, 2, 1, 1, 0, 2, 0 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new RecursiveCLDiversity("istatenum", 4.0, 5)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/fars.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/fars_subset.csv", StandardCharsets.UTF_8, ';')))), "istatenum", "./data/fars.csv", 91430.99721202659, new int[] { 2, 0, 3, 3, 0, 1, 0 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new RecursiveCLDiversity("istatenum", 4.0, 5)), "istatenum", "./data/fars.csv", 585933.0095846694, new int[] { 0, 2, 0, 1, 1, 2, 0 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/atus.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/atus_subset.csv", StandardCharsets.UTF_8, ';')))), "Highest level of school completed", "./data/atus.csv", 212656.0007008077, new int[] { 0, 2, 0, 1, 1, 1, 2, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("Highest level of school completed", 0.2, Hierarchy.create("./data/atus_hierarchy_Highest level of school completed.csv", StandardCharsets.UTF_8, ';'))).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/atus.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/atus_subset.csv", StandardCharsets.UTF_8, ';')))), "Highest level of school completed", "./data/atus.csv", 510614.55166065297, new int[] { 0, 5, 0, 0, 2, 2, 2, 2 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("Highest level of school completed", 0.2, Hierarchy.create("./data/atus_hierarchy_Highest level of school completed.csv", StandardCharsets.UTF_8, ';'))), "Highest level of school completed", "./data/atus.csv", 4970273.35942406, new int[] { 1, 4, 0, 2, 2, 0, 2, 2 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new RecursiveCLDiversity("Highest level of school completed", 4.0, 5)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/atus.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/atus_subset.csv", StandardCharsets.UTF_8, ';')))), "Highest level of school completed", "./data/atus.csv", 348418.9288637205, new int[] { 0, 4, 0, 1, 2, 0, 1, 2 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new RecursiveCLDiversity("Highest level of school completed", 4.0, 5)), "Highest level of school completed", "./data/atus.csv", 3224480.405684781, new int[] { 0, 4, 0, 1, 2, 0, 0, 2 }, false) },
                                              /* 70 */{ new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/ihis.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/ihis_subset.csv", StandardCharsets.UTF_8, ';')))), "EDUC", "./data/ihis.csv", 958639.1926385858, new int[] { 0, 1, 2, 2, 0, 1, 1, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("EDUC", 0.2, Hierarchy.create("./data/ihis_hierarchy_EDUC.csv", StandardCharsets.UTF_8, ';'))).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/ihis.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/ihis_subset.csv", StandardCharsets.UTF_8, ';')))), "EDUC", "./data/ihis.csv", 1471763.5565151938, new int[] { 0, 0, 0, 3, 4, 2, 0, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("EDUC", 0.2, Hierarchy.create("./data/ihis_hierarchy_EDUC.csv", StandardCharsets.UTF_8, ';'))), "EDUC", "./data/ihis.csv", 1.4719292081181683E7, new int[] { 0, 0, 0, 3, 4, 2, 0, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new RecursiveCLDiversity("EDUC", 4.0, 5)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/ihis.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/ihis_subset.csv", StandardCharsets.UTF_8, ';')))), "EDUC", "./data/ihis.csv", 1113232.2757912248, new int[] { 0, 0, 1, 2, 3, 1, 0, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new RecursiveCLDiversity("EDUC", 4.0, 5)), "EDUC", "./data/ihis.csv", 7735322.29514608, new int[] { 0, 0, 0, 1, 3, 0, 0, 1 }, false, 0.000000001d) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/adult.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/adult_subset.csv", StandardCharsets.UTF_8, ';')))), "occupation", "./data/adult.csv", 25949.0068665567, new int[] { 1, 0, 1, 2, 2, 2, 2, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("occupation", 0.2, Hierarchy.create("./data/adult_hierarchy_occupation.csv", StandardCharsets.UTF_8, ';'))).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/adult.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/adult_subset.csv", StandardCharsets.UTF_8, ';')))), "occupation", "./data/adult.csv", 40282.23779327559, new int[] { 1, 4, 0, 1, 3, 2, 2, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("occupation", 0.2, Hierarchy.create("./data/adult_hierarchy_occupation.csv", StandardCharsets.UTF_8, ';'))), "occupation", "./data/adult.csv", 374778.01889889664, new int[] { 1, 4, 0, 0, 3, 1, 2, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new RecursiveCLDiversity("occupation", 4.0, 5)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/adult.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/adult_subset.csv", StandardCharsets.UTF_8, ';')))), "occupation", "./data/adult.csv", 28759.669970588497, new int[] { 1, 0, 1, 2, 3, 2, 2, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new RecursiveCLDiversity("occupation", 4.0, 5)), "occupation", "./data/adult.csv", 209764.96161974416, new int[] { 1, 0, 1, 1, 2, 2, 2, 0 }, false) },
                                              /* 80 */{ new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/cup.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/cup_subset.csv", StandardCharsets.UTF_8, ';')))), "RAMNTALL", "./data/cup.csv", 143476.1692988247, new int[] { 3, 4, 1, 1, 0, 3, 4 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("RAMNTALL", 0.2, Hierarchy.create("./data/cup_hierarchy_RAMNTALL.csv", StandardCharsets.UTF_8, ';'))).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/cup.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/cup_subset.csv", StandardCharsets.UTF_8, ';')))), "RAMNTALL", "./data/cup.csv", 167669.48564213628, new int[] { 4, 4, 1, 2, 0, 3, 4 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("RAMNTALL", 0.2, Hierarchy.create("./data/cup_hierarchy_RAMNTALL.csv", StandardCharsets.UTF_8, ';'))), "RAMNTALL", "./data/cup.csv", 1407619.3716609064, new int[] { 3, 4, 1, 0, 0, 4, 4 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new RecursiveCLDiversity("RAMNTALL", 4.0, 5)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/cup.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/cup_subset.csv", StandardCharsets.UTF_8, ';')))), "RAMNTALL", "./data/cup.csv", 143476.1692988247, new int[] { 3, 4, 1, 1, 0, 3, 4 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new RecursiveCLDiversity("RAMNTALL", 4.0, 5)), "RAMNTALL", "./data/cup.csv", 1254396.0338242182, new int[] { 2, 4, 1, 0, 0, 4, 4 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/fars.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/fars_subset.csv", StandardCharsets.UTF_8, ';')))), "istatenum", "./data/fars.csv", 93329.75289569901, new int[] { 2, 0, 3, 3, 0, 0, 0 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("istatenum", 0.2, Hierarchy.create("./data/fars_hierarchy_istatenum.csv", StandardCharsets.UTF_8, ';'))).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/fars.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/fars_subset.csv", StandardCharsets.UTF_8, ';')))), "istatenum", "./data/fars.csv", 122965.0956511249, new int[] { 5, 2, 1, 1, 0, 2, 0 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("istatenum", 0.2, Hierarchy.create("./data/fars_hierarchy_istatenum.csv", StandardCharsets.UTF_8, ';'))), "istatenum", "./data/fars.csv", 958932.8909394152, new int[] { 2, 2, 1, 1, 0, 2, 0 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new RecursiveCLDiversity("istatenum", 4.0, 5)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/fars.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/fars_subset.csv", StandardCharsets.UTF_8, ';')))), "istatenum", "./data/fars.csv", 96001.27991005548, new int[] { 2, 0, 3, 3, 0, 1, 0 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new RecursiveCLDiversity("istatenum", 4.0, 5)), "istatenum", "./data/fars.csv", 630178.7565353523, new int[] { 0, 2, 1, 1, 0, 2, 0 }, false) },
                                              /* 90 */{ new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/atus.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/atus_subset.csv", StandardCharsets.UTF_8, ';')))), "Highest level of school completed", "./data/atus.csv", 245635.22647061598, new int[] { 0, 2, 0, 1, 1, 1, 2, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("Highest level of school completed", 0.2, Hierarchy.create("./data/atus_hierarchy_Highest level of school completed.csv", StandardCharsets.UTF_8, ';'))).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/atus.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/atus_subset.csv", StandardCharsets.UTF_8, ';')))), "Highest level of school completed", "./data/atus.csv", 524320.641588512, new int[] { 0, 5, 0, 0, 2, 2, 2, 2 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("Highest level of school completed", 0.2, Hierarchy.create("./data/atus_hierarchy_Highest level of school completed.csv", StandardCharsets.UTF_8, ';'))), "Highest level of school completed", "./data/atus.csv", 5108199.8005006835, new int[] { 1, 4, 0, 2, 2, 0, 2, 2 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new RecursiveCLDiversity("Highest level of school completed", 4.0, 5)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/atus.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/atus_subset.csv", StandardCharsets.UTF_8, ';')))), "Highest level of school completed", "./data/atus.csv", 379027.95627973945, new int[] { 0, 4, 0, 1, 2, 0, 1, 2 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new RecursiveCLDiversity("Highest level of school completed", 4.0, 5)), "Highest level of school completed", "./data/atus.csv", 3536911.5162082445, new int[] { 0, 4, 0, 0, 2, 0, 1, 2 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/ihis.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/ihis_subset.csv", StandardCharsets.UTF_8, ';')))), "EDUC", "./data/ihis.csv", 1028591.356117628, new int[] { 0, 1, 2, 2, 0, 1, 1, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("EDUC", 0.2, Hierarchy.create("./data/ihis_hierarchy_EDUC.csv", StandardCharsets.UTF_8, ';'))).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/ihis.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/ihis_subset.csv", StandardCharsets.UTF_8, ';')))), "EDUC", "./data/ihis.csv", 1481940.863625334, new int[] { 0, 0, 0, 3, 4, 2, 0, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("EDUC", 0.2, Hierarchy.create("./data/ihis_hierarchy_EDUC.csv", StandardCharsets.UTF_8, ';'))), "EDUC", "./data/ihis.csv", 1.4719292081181683E7, new int[] { 0, 0, 0, 3, 4, 2, 0, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new RecursiveCLDiversity("EDUC", 4.0, 5)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/ihis.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/ihis_subset.csv", StandardCharsets.UTF_8, ';')))), "EDUC", "./data/ihis.csv", 1185607.5242246124, new int[] { 0, 0, 1, 2, 3, 1, 0, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new RecursiveCLDiversity("EDUC", 4.0, 5)), "EDUC", "./data/ihis.csv", 8460989.1661296, new int[] { 0, 0, 0, 1, 3, 0, 0, 1 }, false) },
                                              /* 100 */{ new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/adult.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/adult_subset.csv", StandardCharsets.UTF_8, ';')))), "occupation", "./data/adult.csv", 33649.9118226187, new int[] { 1, 4, 1, 1, 0, 2, 2, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new HierarchicalDistanceTCloseness("occupation", 0.2, Hierarchy.create("./data/adult_hierarchy_occupation.csv", StandardCharsets.UTF_8, ';'))).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/adult.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/adult_subset.csv", StandardCharsets.UTF_8, ';')))), "occupation", "./data/adult.csv", 40089.9423426752, new int[] { 1, 4, 0, 1, 3, 2, 2, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new HierarchicalDistanceTCloseness("occupation", 0.2, Hierarchy.create("./data/adult_hierarchy_occupation.csv", StandardCharsets.UTF_8, ';'))), "occupation", "./data/adult.csv", 367390.5779876774, new int[] { 1, 4, 0, 0, 3, 1, 2, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/cup.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/cup_subset.csv", StandardCharsets.UTF_8, ';')))), "RAMNTALL", "./data/cup.csv", 188685.11376583832, new int[] { 4, 4, 1, 1, 1, 4, 3 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new HierarchicalDistanceTCloseness("RAMNTALL", 0.2, Hierarchy.create("./data/cup_hierarchy_RAMNTALL.csv", StandardCharsets.UTF_8, ';'))).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/cup.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/cup_subset.csv", StandardCharsets.UTF_8, ';')))), "RAMNTALL", "./data/cup.csv", 188685.11376583832, new int[] { 4, 4, 1, 1, 1, 4, 3 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new HierarchicalDistanceTCloseness("RAMNTALL", 0.2, Hierarchy.create("./data/cup_hierarchy_RAMNTALL.csv", StandardCharsets.UTF_8, ';'))), "RAMNTALL", "./data/cup.csv", 1377036.0221522974, new int[] { 2, 4, 1, 2, 0, 3, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/fars.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/fars_subset.csv", StandardCharsets.UTF_8, ';')))), "istatenum", "./data/fars.csv", 130155.7199192575, new int[] { 3, 2, 3, 0, 1, 2, 2 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new HierarchicalDistanceTCloseness("istatenum", 0.2, Hierarchy.create("./data/fars_hierarchy_istatenum.csv", StandardCharsets.UTF_8, ';'))).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/fars.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/fars_subset.csv", StandardCharsets.UTF_8, ';')))), "istatenum", "./data/fars.csv", 142414.2491462392, new int[] { 1, 2, 3, 3, 1, 2, 2 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new HierarchicalDistanceTCloseness("istatenum", 0.2, Hierarchy.create("./data/fars_hierarchy_istatenum.csv", StandardCharsets.UTF_8, ';'))), "istatenum", "./data/fars.csv", 913268.7198249138, new int[] { 2, 2, 1, 1, 0, 2, 0 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/atus.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/atus_subset.csv", StandardCharsets.UTF_8, ';')))), "Highest level of school completed", "./data/atus.csv", 347941.72665935673, new int[] { 0, 0, 0, 2, 2, 2, 2, 2 }, false) },
                                              /* 110 */{ new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new HierarchicalDistanceTCloseness("Highest level of school completed", 0.2, Hierarchy.create("./data/atus_hierarchy_Highest level of school completed.csv", StandardCharsets.UTF_8, ';'))).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/atus.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/atus_subset.csv", StandardCharsets.UTF_8, ';')))), "Highest level of school completed", "./data/atus.csv", 528157.4793996721, new int[] { 0, 5, 0, 2, 2, 0, 2, 2 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new HierarchicalDistanceTCloseness("Highest level of school completed", 0.2, Hierarchy.create("./data/atus_hierarchy_Highest level of school completed.csv", StandardCharsets.UTF_8, ';'))), "Highest level of school completed", "./data/atus.csv", 4970273.35942406, new int[] { 1, 4, 0, 2, 2, 0, 2, 2 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/ihis.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/ihis_subset.csv", StandardCharsets.UTF_8, ';')))), "EDUC", "./data/ihis.csv", 1073722.7704188202, new int[] { 0, 1, 1, 3, 0, 2, 1, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new HierarchicalDistanceTCloseness("EDUC", 0.2, Hierarchy.create("./data/ihis_hierarchy_EDUC.csv", StandardCharsets.UTF_8, ';'))).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/ihis.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/ihis_subset.csv", StandardCharsets.UTF_8, ';')))), "EDUC", "./data/ihis.csv", 1471763.5565151938, new int[] { 0, 0, 0, 3, 4, 2, 0, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, true)).addPrivacyModel(new HierarchicalDistanceTCloseness("EDUC", 0.2, Hierarchy.create("./data/ihis_hierarchy_EDUC.csv", StandardCharsets.UTF_8, ';'))), "EDUC", "./data/ihis.csv", 1.4719292081181683E7, new int[] { 0, 0, 0, 3, 4, 2, 0, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/adult.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/adult_subset.csv", StandardCharsets.UTF_8, ';')))), "occupation", "./data/adult.csv", 33660.3063277646, new int[] { 1, 4, 1, 1, 0, 2, 2, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new HierarchicalDistanceTCloseness("occupation", 0.2, Hierarchy.create("./data/adult_hierarchy_occupation.csv", StandardCharsets.UTF_8, ';'))).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/adult.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/adult_subset.csv", StandardCharsets.UTF_8, ';')))), "occupation", "./data/adult.csv", 40282.23779327559, new int[] { 1, 4, 0, 1, 3, 2, 2, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new HierarchicalDistanceTCloseness("occupation", 0.2, Hierarchy.create("./data/adult_hierarchy_occupation.csv", StandardCharsets.UTF_8, ';'))), "occupation", "./data/adult.csv", 374778.01889889664, new int[] { 1, 4, 0, 0, 3, 1, 2, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/cup.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/cup_subset.csv", StandardCharsets.UTF_8, ';')))), "RAMNTALL", "./data/cup.csv", 188698.52093140973, new int[] { 4, 4, 1, 1, 1, 4, 3 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new HierarchicalDistanceTCloseness("RAMNTALL", 0.2, Hierarchy.create("./data/cup_hierarchy_RAMNTALL.csv", StandardCharsets.UTF_8, ';'))).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/cup.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/cup_subset.csv", StandardCharsets.UTF_8, ';')))), "RAMNTALL", "./data/cup.csv", 188714.6627588751, new int[] { 4, 4, 1, 1, 1, 4, 3 }, false) },
                                              /* 120 */{ new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new HierarchicalDistanceTCloseness("RAMNTALL", 0.2, Hierarchy.create("./data/cup_hierarchy_RAMNTALL.csv", StandardCharsets.UTF_8, ';'))), "RAMNTALL", "./data/cup.csv", 1407619.3716609064, new int[] { 3, 4, 1, 0, 0, 4, 4 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/fars.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/fars_subset.csv", StandardCharsets.UTF_8, ';')))), "istatenum", "./data/fars.csv", 130481.14757714301, new int[] { 3, 2, 3, 0, 1, 2, 2 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new HierarchicalDistanceTCloseness("istatenum", 0.2, Hierarchy.create("./data/fars_hierarchy_istatenum.csv", StandardCharsets.UTF_8, ';'))).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/fars.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/fars_subset.csv", StandardCharsets.UTF_8, ';')))), "istatenum", "./data/fars.csv", 142540.0375939336, new int[] { 1, 2, 3, 3, 1, 2, 2 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new HierarchicalDistanceTCloseness("istatenum", 0.2, Hierarchy.create("./data/fars_hierarchy_istatenum.csv", StandardCharsets.UTF_8, ';'))), "istatenum", "./data/fars.csv", 958932.8909394152, new int[] { 2, 2, 1, 1, 0, 2, 0 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/atus.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/atus_subset.csv", StandardCharsets.UTF_8, ';')))), "Highest level of school completed", "./data/atus.csv", 348509.5903491556, new int[] { 0, 0, 0, 2, 2, 2, 2, 2 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new HierarchicalDistanceTCloseness("Highest level of school completed", 0.2, Hierarchy.create("./data/atus_hierarchy_Highest level of school completed.csv", StandardCharsets.UTF_8, ';'))).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/atus.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/atus_subset.csv", StandardCharsets.UTF_8, ';')))), "Highest level of school completed", "./data/atus.csv", 542366.1748035981, new int[] { 0, 5, 0, 2, 2, 0, 2, 2 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new HierarchicalDistanceTCloseness("Highest level of school completed", 0.2, Hierarchy.create("./data/atus_hierarchy_Highest level of school completed.csv", StandardCharsets.UTF_8, ';'))), "Highest level of school completed", "./data/atus.csv", 5108199.8005006835, new int[] { 1, 4, 0, 2, 2, 0, 2, 2 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/ihis.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/ihis_subset.csv", StandardCharsets.UTF_8, ';')))), "EDUC", "./data/ihis.csv", 1091154.322219155, new int[] { 0, 1, 1, 3, 0, 2, 1, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new HierarchicalDistanceTCloseness("EDUC", 0.2, Hierarchy.create("./data/ihis_hierarchy_EDUC.csv", StandardCharsets.UTF_8, ';'))).addPrivacyModel(new DPresence(0.05, 0.15, DataSubset.create(Data.create("./data/ihis.csv", StandardCharsets.UTF_8, ';'), Data.create("./data/ihis_subset.csv", StandardCharsets.UTF_8, ';')))), "EDUC", "./data/ihis.csv", 1481940.863625334, new int[] { 0, 0, 0, 3, 4, 2, 0, 1 }, false) },
                                              { new ARXAnonymizationTestCase(ARXConfiguration.create(0.05d, Metric.createPrecomputedEntropyMetric(0.1d, false)).addPrivacyModel(new HierarchicalDistanceTCloseness("EDUC", 0.2, Hierarchy.create("./data/ihis_hierarchy_EDUC.csv", StandardCharsets.UTF_8, ';'))), "EDUC", "./data/ihis.csv", 1.4719292081181683E7, new int[] { 0, 0, 0, 3, 4, 2, 0, 1 }, false) },
                                              
        });
    }
    
    /**
     * Creates a new instance.
     *
     * @param testCase
     */
    public TestAnonymizationCombinations(final ARXAnonymizationTestCase testCase) {
        super(testCase);
    }
    
}
