/*
 * ARX Data Anonymization Tool
 * Copyright 2012 - 2023 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.deidentifier.arx.metric.Metric.AggregateFunction;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

/**
 * Test for utility estimations.
 *
 * @author Fabian Prasser
 * @author Florian Kohlmayer
 */
@RunWith(Parameterized.class)
public class TestUtilityMetrics2 extends AbstractTestUtilityEstimation {
    
    /**
     * 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 ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createAECSMetric()).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", "[0, 0, 0, 0, 0, 0, 0, 0]", "9.139393939393939", "[0, 2, 0, 1, 0, 0, 1, 1]", "11.211895910780669", "[0, 4, 0, 2, 0, 0, 0, 0]", "15.387755102040817", "[1, 4, 1, 2, 2, 2, 0, 0]", "107.71428571428571", "[1, 4, 1, 2, 3, 2, 0, 0]", "232.0", "[0, 4, 1, 2, 3, 2, 1, 0]", "335.1111111111111", "[1, 4, 1, 1, 1, 2, 2, 1]", "301.6", "[1, 4, 1, 2, 3, 2, 0, 1]", "430.85714285714283", "[1, 4, 0, 2, 3, 2, 2, 1]", "603.2", "[1, 4, 1, 2, 3, 2, 2, 1]", "3016.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createAECSMetric()).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", "[0, 0, 0, 0, 0, 0, 0, 0]", "100.53333333333333", "[0, 3, 0, 0, 2, 1, 2, 0]", "40.21333333333333", "[0, 1, 0, 2, 2, 1, 1, 1]", "32.78260869565217", "[0, 4, 1, 1, 1, 2, 2, 1]", "150.8", "[1, 4, 0, 1, 3, 2, 2, 1]", "301.6", "[0, 4, 1, 1, 3, 2, 2, 1]", "754.0", "[1, 2, 1, 2, 3, 2, 2, 1]", "377.0", "[1, 4, 1, 1, 3, 2, 2, 1]", "1508.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "3016.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createAECSMetric()).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", "[0, 0, 0, 0, 0, 0, 0, 0]", "3016.0", "[1, 2, 0, 0, 3, 0, 1, 0]", "251.33333333333334", "[1, 2, 0, 1, 0, 2, 2, 1]", "232.0", "[0, 4, 1, 0, 3, 2, 1, 1]", "502.6666666666667", "[1, 4, 1, 2, 2, 2, 2, 1]", "1005.3333333333334", "[1, 4, 1, 1, 3, 2, 2, 1]", "1508.0", "[0, 4, 1, 2, 3, 2, 2, 1]", "1508.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "3016.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createAECSMetric()).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("occupation", 0.2, Hierarchy.create("./data/adult_hierarchy_occupation.csv", StandardCharsets.UTF_8, ';'))), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "1774.235294117647", "[0, 0, 1, 0, 1, 0, 0, 1]", "701.4418604651163", "[1, 4, 0, 2, 0, 2, 2, 1]", "1774.235294117647", "[1, 4, 1, 0, 3, 2, 2, 1]", "4308.857142857143", "[1, 4, 1, 1, 3, 2, 2, 1]", "15081.0", "[0, 4, 1, 2, 3, 2, 2, 1]", "15081.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "30162.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createAECSMetric()).addPrivacyModel(new KAnonymity(5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "29.113899613899616", "[0, 3, 1, 0, 0, 1, 1, 0]", "53.76470588235294", "[1, 2, 1, 2, 0, 2, 0, 1]", "93.96261682242991", "[1, 1, 1, 1, 3, 2, 2, 1]", "1005.4", "[1, 4, 1, 0, 3, 1, 2, 1]", "942.5625", "[0, 3, 1, 2, 3, 1, 2, 1]", "773.3846153846154", "[1, 2, 1, 1, 3, 2, 2, 1]", "1885.125", "[1, 4, 1, 1, 3, 2, 2, 0]", "7540.5", "[1, 4, 1, 2, 3, 1, 2, 1]", "5027.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "30162.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createAECSMetric()).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", "[0, 0, 0, 0, 0, 0, 0, 0]", "3016.0", "[1, 1, 1, 1, 2, 0, 1, 0]", "158.73684210526315", "[1, 1, 0, 2, 0, 2, 2, 1]", "215.42857142857142", "[0, 2, 1, 2, 3, 2, 2, 1]", "377.0", "[1, 4, 1, 2, 3, 2, 1, 1]", "1508.0", "[1, 4, 1, 1, 3, 2, 2, 1]", "1508.0", "[0, 4, 1, 2, 3, 2, 2, 1]", "1508.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "3016.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createAECSMetric()).addPrivacyModel(new HierarchicalDistanceTCloseness("occupation", 0.2, Hierarchy.create("./data/adult_hierarchy_occupation.csv", StandardCharsets.UTF_8, ';'))), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "1774.235294117647", "[1, 2, 1, 1, 0, 1, 1, 1]", "887.1176470588235", "[0, 1, 0, 2, 3, 0, 2, 1]", "914.0", "[0, 4, 1, 1, 2, 2, 2, 1]", "7540.5", "[0, 4, 1, 2, 2, 2, 2, 1]", "7540.5", "[1, 4, 1, 1, 3, 2, 2, 1]", "15081.0", "[0, 4, 1, 2, 3, 2, 2, 1]", "15081.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "30162.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createAECSMetric()).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", "[0, 0, 0, 0, 0, 0, 0, 0]", "201.06666666666666", "[1, 2, 0, 0, 0, 2, 0, 0]", "55.851851851851855", "[0, 4, 0, 1, 1, 2, 2, 0]", "100.53333333333333", "[1, 4, 1, 0, 3, 2, 1, 0]", "232.0", "[1, 4, 0, 2, 2, 2, 2, 1]", "251.33333333333334", "[1, 4, 0, 1, 3, 2, 2, 1]", "301.6", "[1, 4, 1, 2, 3, 2, 2, 0]", "1508.0", "[1, 4, 1, 1, 3, 2, 2, 1]", "1508.0", "[1, 4, 0, 2, 3, 2, 2, 1]", "603.2", "[1, 4, 1, 2, 3, 2, 2, 1]", "3016.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createAECSMetric()).addPrivacyModel(new RecursiveCLDiversity("occupation", 4.0, 5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "62.4472049689441", "[0, 1, 1, 1, 0, 1, 0, 1]", "75.59398496240601", "[0, 3, 1, 2, 2, 1, 0, 1]", "324.3225806451613", "[1, 0, 1, 1, 3, 1, 2, 1]", "157.09375", "[1, 3, 1, 1, 3, 1, 2, 1]", "837.8333333333334", "[1, 4, 1, 1, 3, 2, 2, 0]", "7540.5", "[0, 4, 1, 2, 3, 1, 2, 1]", "2513.5", "[1, 4, 1, 0, 3, 2, 2, 1]", "4308.857142857143", "[1, 4, 1, 2, 2, 2, 2, 1]", "10054.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "30162.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createAECSMetric()).addPrivacyModel(new KAnonymity(5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "29.113899613899616", "[0, 1, 1, 0, 0, 0, 0, 0]", "30.683621566632755", "[0, 0, 0, 0, 2, 1, 2, 0]", "30.37462235649547", "[0, 1, 1, 2, 1, 0, 0, 1]", "63.76744186046512", "[0, 4, 1, 0, 1, 0, 0, 1]", "97.6116504854369", "[1, 4, 1, 0, 2, 0, 1, 0]", "160.43617021276594", "[1, 3, 0, 2, 2, 0, 2, 0]", "150.81", "[0, 3, 1, 0, 3, 2, 1, 1]", "363.3975903614458", "[1, 1, 0, 2, 3, 2, 2, 1]", "520.0344827586207", "[1, 4, 1, 2, 3, 2, 2, 1]", "30162.0") },
                                              /* 10 */{ new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createAECSMetric()).addPrivacyModel(new KAnonymity(5)), "RAMNTALL", "./data/cup.csv", "[0, 0, 0, 0, 0, 0, 0]", "63441.0", "[3, 2, 1, 0, 0, 3, 1]", "24.24188001528468", "[1, 2, 1, 1, 0, 4, 1]", "18.177936962750717", "[5, 4, 0, 1, 0, 2, 0]", "51.78857142857143", "[4, 1, 1, 2, 1, 3, 0]", "55.74780316344464", "[0, 2, 0, 1, 1, 4, 4]", "615.9320388349514", "[4, 2, 0, 2, 1, 4, 0]", "52.823480432972524", "[5, 3, 1, 1, 0, 0, 4]", "20.937623762376237", "[4, 3, 1, 2, 1, 3, 1]", "1349.8085106382978", "[5, 4, 1, 2, 1, 4, 4]", "63441.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createAECSMetric()).addPrivacyModel(new KAnonymity(5)), "istatenum", "./data/fars.csv", "[0, 0, 0, 0, 0, 0, 0]", "122.34787878787878", "[0, 1, 0, 1, 0, 1, 1]", "33.985521885521884", "[0, 2, 3, 0, 1, 1, 0]", "32.83571893298634", "[2, 1, 2, 0, 0, 1, 1]", "53.604354753053634", "[1, 1, 0, 3, 1, 1, 1]", "118.74941176470588", "[4, 0, 0, 0, 0, 2, 2]", "45.121591417076445", "[4, 2, 0, 2, 1, 1, 1]", "355.4119718309859", "[0, 2, 3, 3, 1, 0, 2]", "208.11752577319587", "[4, 0, 2, 0, 1, 2, 2]", "171.95400340715503", "[5, 2, 3, 3, 1, 2, 2]", "100937.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createAECSMetric()).addPrivacyModel(new KAnonymity(5)), "Highest level of school completed", "./data/atus.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "68.94055228841728", "[1, 1, 0, 0, 0, 1, 0, 0]", "128.0581809546426", "[1, 0, 0, 1, 1, 1, 0, 0]", "96.83120847548932", "[0, 0, 1, 0, 1, 1, 0, 1]", "89.83058470764618", "[0, 0, 0, 0, 1, 2, 1, 1]", "70.25182386659719", "[1, 4, 0, 0, 1, 0, 1, 0]", "266.9569306930693", "[0, 5, 1, 0, 0, 1, 2, 1]", "729.7063599458728", "[2, 4, 0, 2, 0, 1, 1, 1]", "771.4635193133047", "[1, 4, 0, 0, 2, 1, 2, 1]", "1182.5723684210527", "[2, 5, 1, 2, 2, 2, 2, 2]", "539253.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createAECSMetric()).addPrivacyModel(new KAnonymity(5)), "EDUC", "./data/ihis.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "16.86359397518863", "[1, 2, 0, 0, 0, 1, 0, 0]", "49.84563982626128", "[0, 0, 0, 3, 0, 0, 1, 0]", "25.881036539087066", "[0, 0, 0, 0, 1, 2, 1, 0]", "45.65640182089438", "[0, 0, 1, 0, 1, 1, 0, 1]", "57.85003150598614", "[3, 1, 2, 0, 0, 0, 0, 0]", "62.59198657436543", "[1, 0, 2, 0, 3, 1, 0, 1]", "596.1558441558442", "[5, 2, 1, 0, 1, 0, 0, 0]", "174.769951676673", "[3, 0, 2, 3, 3, 0, 1, 1]", "3926.0", "[5, 2, 2, 3, 4, 2, 1, 1]", "1193504.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createAECSMetric()).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", "[0, 0, 0, 0, 0, 0, 0, 0]", "100.53333333333333", "[0, 0, 1, 0, 2, 1, 2, 1]", "22.176470588235293", "[0, 3, 0, 0, 2, 0, 2, 1]", "52.91228070175438", "[0, 0, 1, 2, 3, 2, 2, 0]", "23.2", "[0, 4, 0, 1, 2, 1, 1, 1]", "81.51351351351352", "[1, 4, 0, 2, 2, 2, 0, 0]", "71.80952380952381", "[1, 3, 1, 2, 1, 2, 1, 0]", "65.56521739130434", "[1, 4, 1, 2, 3, 2, 2, 1]", "3016.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createAECSMetric()).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", "[0, 0, 0, 0, 0, 0, 0, 0]", "3016.0", "[1, 0, 1, 0, 3, 0, 1, 0]", "167.55555555555554", "[0, 2, 1, 0, 0, 1, 2, 1]", "335.1111111111111", "[1, 1, 1, 1, 3, 2, 0, 0]", "201.06666666666666", "[0, 2, 1, 2, 0, 2, 2, 0]", "301.6", "[1, 4, 0, 2, 3, 2, 2, 1]", "754.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "3016.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createAECSMetric()).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("occupation", 0.2, Hierarchy.create("./data/adult_hierarchy_occupation.csv", StandardCharsets.UTF_8, ';'))), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "1774.235294117647", "[0, 1, 0, 0, 0, 2, 0, 1]", "1206.48", "[1, 1, 1, 0, 1, 0, 1, 1]", "569.0943396226415", "[1, 2, 0, 2, 3, 2, 0, 0]", "1508.1", "[0, 4, 0, 2, 1, 2, 1, 0]", "2742.0", "[1, 4, 1, 2, 2, 1, 2, 1]", "3770.25", "[1, 4, 1, 2, 3, 2, 2, 1]", "30162.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createAECSMetric()).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", "[0, 0, 0, 0, 0, 0, 0, 0]", "201.06666666666666", "[0, 1, 1, 1, 1, 0, 2, 0]", "39.68421052631579", "[1, 4, 0, 0, 0, 1, 2, 0]", "71.80952380952381", "[1, 1, 0, 2, 3, 2, 0, 1]", "56.905660377358494", "[0, 2, 1, 0, 3, 2, 1, 1]", "65.56521739130434", "[1, 3, 1, 1, 3, 2, 1, 0]", "137.0909090909091", "[1, 3, 0, 2, 3, 1, 2, 0]", "143.61904761904762", "[1, 4, 1, 2, 3, 2, 2, 1]", "3016.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createAECSMetric()).addPrivacyModel(new RecursiveCLDiversity("occupation", 4.0, 5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "62.4472049689441", "[1, 0, 0, 0, 1, 0, 1, 1]", "52.455652173913045", "[0, 0, 1, 1, 0, 2, 2, 0]", "42.72237960339943", "[1, 1, 1, 0, 3, 0, 1, 1]", "171.375", "[0, 3, 0, 0, 1, 1, 2, 1]", "155.4742268041237", "[0, 1, 0, 2, 3, 2, 1, 1]", "235.640625", "[0, 2, 1, 1, 3, 2, 1, 1]", "603.24", "[1, 4, 1, 2, 3, 2, 2, 1]", "30162.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createEntropyMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "36572.579698609305", "[0, 0, 0, 0, 3, 0, 0, 1]", "29151.026471165096", "[0, 4, 0, 2, 1, 0, 2, 0]", "32386.775747138094", "[1, 4, 1, 2, 1, 2, 2, 0]", "37795.4891813073", "[1, 3, 1, 2, 1, 2, 2, 1]", "35631.748200874004", "[1, 4, 0, 2, 3, 1, 2, 1]", "42104.3166577941", "[1, 4, 1, 1, 2, 2, 2, 1]", "39177.7411830619", "[0, 4, 1, 2, 2, 2, 2, 1]", "39457.0680989655", "[1, 4, 1, 2, 2, 2, 2, 1]", "42185.6386917231", "[1, 4, 1, 2, 3, 2, 2, 1]", "45489.51725469279") },
                                              /* 20 */{ new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createEntropyMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "42878.8699918206", "[1, 0, 0, 2, 0, 0, 2, 1]", "31507.7278999616", "[0, 3, 0, 0, 0, 2, 2, 1]", "28509.6709674651", "[0, 4, 0, 0, 3, 2, 2, 1]", "35261.99222025591", "[0, 4, 1, 2, 2, 2, 2, 0]", "37023.4106467834", "[0, 4, 1, 2, 1, 2, 2, 1]", "37502.5760407318", "[1, 4, 0, 1, 3, 2, 2, 1]", "40089.9423426752", "[1, 4, 1, 2, 3, 2, 2, 0]", "43053.85980251069", "[0, 4, 1, 2, 3, 2, 2, 1]", "42760.946661935195", "[1, 4, 1, 2, 3, 2, 2, 1]", "45489.51725469279") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createEntropyMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "45489.51725469279", "[1, 3, 0, 1, 0, 2, 0, 0]", "41658.27496240399", "[0, 4, 0, 1, 3, 1, 0, 1]", "40609.5440777084", "[0, 4, 1, 2, 3, 0, 2, 0]", "43505.49855877619", "[0, 4, 1, 1, 3, 2, 2, 1]", "39753.049153274", "[1, 4, 1, 1, 3, 2, 2, 1]", "42481.619746031596", "[0, 4, 1, 2, 3, 2, 2, 1]", "42760.946661935195", "[1, 4, 1, 2, 3, 2, 2, 1]", "45489.51725469279") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createEntropyMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "449310.02427120315", "[0, 0, 0, 1, 0, 0, 1, 1]", "439268.9450931774", "[1, 3, 1, 1, 1, 0, 0, 1]", "400834.4523395001", "[0, 4, 1, 1, 1, 2, 2, 1]", "397534.5211960351", "[1, 4, 1, 2, 3, 1, 2, 1]", "445323.52112350916", "[0, 4, 1, 2, 3, 2, 2, 1]", "428467.2965004933", "[1, 4, 1, 2, 3, 2, 2, 1]", "455884.9365769584") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createEntropyMetric(false)).addPrivacyModel(new KAnonymity(5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "268778.22471939825", "[0, 1, 0, 1, 0, 2, 1, 1]", "199996.96695661292", "[0, 2, 1, 2, 2, 0, 0, 0]", "253206.5135958653", "[0, 2, 0, 2, 3, 2, 2, 1]", "331905.60100801825", "[1, 4, 1, 1, 2, 2, 2, 0]", "368439.26393309573", "[0, 4, 1, 2, 3, 2, 0, 1]", "385895.4270913376", "[1, 4, 1, 1, 2, 2, 2, 1]", "392857.38858687796", "[1, 3, 1, 1, 3, 2, 2, 1]", "379458.17719685636", "[1, 2, 1, 2, 3, 2, 2, 1]", "382559.9421471483", "[1, 4, 1, 2, 3, 2, 2, 1]", "455884.9365769584") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createEntropyMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "45489.51725469279", "[1, 2, 0, 1, 3, 2, 1, 0]", "38677.1746234927", "[1, 4, 0, 1, 0, 2, 2, 1]", "39790.4811756503", "[0, 3, 1, 2, 3, 2, 2, 1]", "38652.87376940461", "[1, 4, 1, 2, 2, 2, 2, 1]", "42185.6386917231", "[1, 4, 1, 1, 3, 2, 2, 1]", "42481.619746031596", "[0, 4, 1, 2, 3, 2, 2, 1]", "42760.946661935195", "[1, 4, 1, 2, 3, 2, 2, 1]", "45489.51725469279") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createEntropyMetric(false)).addPrivacyModel(new HierarchicalDistanceTCloseness("occupation", 0.2, Hierarchy.create("./data/adult_hierarchy_occupation.csv", StandardCharsets.UTF_8, ';'))), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "449310.02427120315", "[0, 0, 1, 1, 0, 1, 2, 0]", "427484.87811209384", "[1, 4, 1, 1, 1, 1, 2, 1]", "380967.84437195107", "[0, 4, 1, 1, 1, 2, 2, 1]", "397534.5211960351", "[1, 4, 0, 1, 3, 2, 2, 1]", "403537.92799185414", "[0, 4, 1, 1, 3, 2, 2, 1]", "398400.0741806447", "[0, 4, 1, 2, 3, 2, 2, 1]", "428467.2965004933", "[1, 4, 1, 2, 3, 2, 2, 1]", "455884.9365769584") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createEntropyMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "44045.8432426865", "[1, 0, 0, 2, 1, 1, 1, 0]", "35155.793020370795", "[0, 3, 1, 0, 2, 2, 1, 1]", "30749.4976218815", "[0, 4, 1, 2, 3, 1, 2, 0]", "39472.835452393694", "[1, 4, 0, 2, 2, 2, 2, 1]", "39806.915906809", "[1, 4, 0, 1, 3, 2, 2, 1]", "40089.9423426752", "[1, 4, 1, 2, 3, 2, 2, 0]", "43053.85980251069", "[1, 4, 1, 1, 3, 2, 2, 1]", "42481.619746031596", "[1, 4, 0, 2, 3, 2, 2, 1]", "43097.83985133639", "[1, 4, 1, 2, 3, 2, 2, 1]", "45489.51725469279") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createEntropyMetric(false)).addPrivacyModel(new RecursiveCLDiversity("occupation", 4.0, 5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "335625.27531107684", "[0, 1, 0, 2, 3, 1, 0, 1]", "280220.9832036824", "[0, 3, 0, 2, 3, 2, 1, 0]", "323542.03430225555", "[0, 4, 1, 0, 2, 2, 2, 1]", "341038.03115071554", "[1, 4, 0, 2, 2, 2, 2, 0]", "375172.909809093", "[1, 4, 1, 1, 3, 2, 2, 0]", "401399.58960332756", "[1, 4, 0, 1, 3, 2, 2, 1]", "402442.67898458894", "[1, 4, 1, 2, 3, 1, 2, 1]", "445323.52112350916", "[1, 3, 1, 2, 3, 2, 2, 1]", "409525.39951670496", "[1, 4, 1, 2, 3, 2, 2, 1]", "455884.9365769584") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createEntropyMetric(false)).addPrivacyModel(new KAnonymity(5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "268778.22471939825", "[0, 1, 0, 1, 0, 1, 0, 1]", "206871.187629197", "[0, 3, 1, 0, 0, 0, 0, 1]", "225818.85565423348", "[1, 1, 1, 0, 1, 1, 0, 1]", "220123.80427676294", "[1, 0, 0, 1, 2, 2, 0, 1]", "198394.0850062312", "[0, 1, 0, 0, 1, 2, 2, 1]", "213938.9707150555", "[0, 4, 0, 0, 3, 1, 0, 0]", "281197.88251886255", "[1, 4, 1, 0, 1, 1, 0, 1]", "299805.4349351586", "[1, 3, 1, 2, 1, 2, 0, 1]", "315247.228170622", "[1, 4, 1, 2, 3, 2, 2, 1]", "455884.9365769584") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createEntropyMetric(false)).addPrivacyModel(new KAnonymity(5)), "RAMNTALL", "./data/cup.csv", "[0, 0, 0, 0, 0, 0, 0]", "2207518.9993976387", "[1, 0, 1, 2, 0, 0, 0]", "2207518.999397594", "[2, 0, 0, 0, 1, 4, 0]", "2207435.145801786", "[3, 2, 1, 0, 1, 1, 0]", "1761956.8888455457", "[4, 1, 1, 1, 0, 2, 2]", "1453095.9878387728", "[3, 2, 0, 1, 0, 3, 3]", "1290009.3401703774", "[2, 4, 1, 0, 0, 3, 3]", "1252255.714739398", "[3, 1, 1, 1, 1, 3, 3]", "1555332.3009072572", "[5, 0, 1, 1, 0, 4, 4]", "1535699.521423932", "[5, 4, 1, 2, 1, 4, 4]", "2207518.9993976974") },
                                              /* 30 */{ new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createEntropyMetric(false)).addPrivacyModel(new KAnonymity(5)), "istatenum", "./data/fars.csv", "[0, 0, 0, 0, 0, 0, 0]", "805526.2618565465", "[0, 0, 0, 0, 1, 0, 1]", "900715.6011957505", "[0, 0, 0, 3, 0, 0, 0]", "530373.4899171471", "[0, 0, 0, 2, 0, 1, 0]", "589622.817157221", "[4, 0, 0, 1, 0, 1, 0]", "743462.935353104", "[0, 2, 0, 2, 0, 2, 0]", "610899.0454431569", "[0, 1, 1, 0, 1, 2, 1]", "850936.2476760466", "[1, 2, 1, 3, 0, 2, 2]", "1179292.4833094794", "[4, 1, 1, 2, 0, 2, 2]", "1344741.6698462092", "[5, 2, 3, 3, 1, 2, 2]", "1828114.5308318876") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createEntropyMetric(false)).addPrivacyModel(new KAnonymity(5)), "Highest level of school completed", "./data/atus.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "1259537.2231967654", "[0, 1, 0, 0, 0, 0, 0, 2]", "1705815.3474986705", "[0, 2, 0, 0, 1, 1, 0, 0]", "1754332.0014117132", "[0, 3, 0, 0, 0, 1, 1, 0]", "1831564.5939928878", "[0, 0, 0, 2, 1, 1, 0, 1]", "1608202.8920696646", "[1, 0, 0, 0, 0, 2, 1, 1]", "1721359.1869000471", "[0, 0, 0, 1, 1, 1, 0, 2]", "1573071.615685773", "[1, 4, 0, 0, 1, 2, 2, 2]", "3790189.519044233", "[1, 3, 1, 2, 2, 2, 1, 2]", "5546865.841164317", "[2, 5, 1, 2, 2, 2, 2, 2]", "7631154.350031186") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createEntropyMetric(false)).addPrivacyModel(new KAnonymity(5)), "EDUC", "./data/ihis.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "1.1187289339555768E7", "[0, 1, 1, 0, 0, 0, 0, 0]", "7731998.340235527", "[1, 0, 0, 2, 0, 0, 0, 0]", "7663802.176276546", "[1, 0, 0, 0, 2, 0, 0, 0]", "7881739.155309069", "[2, 1, 0, 0, 0, 0, 0, 1]", "7015694.546330849", "[3, 0, 0, 1, 0, 0, 0, 1]", "7019478.382462303", "[5, 0, 0, 1, 0, 0, 0, 0]", "7850659.387720069", "[0, 0, 2, 3, 3, 0, 1, 1]", "1.2711369785573479E7", "[5, 2, 2, 2, 4, 2, 1, 0]", "2.3063727989775106E7", "[5, 2, 2, 3, 4, 2, 1, 1]", "2.5025416064416602E7") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createEntropyMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "42878.8699918206", "[1, 2, 1, 0, 0, 2, 1, 0]", "28157.088177109803", "[1, 2, 0, 0, 1, 1, 1, 1]", "29409.5003562485", "[1, 4, 1, 0, 0, 1, 1, 0]", "29538.656183317195", "[1, 4, 0, 2, 0, 0, 0, 1]", "32139.336829158896", "[0, 4, 1, 0, 2, 2, 2, 0]", "31937.8380785671", "[0, 4, 0, 0, 2, 2, 2, 1]", "32519.8197989919", "[1, 4, 1, 2, 3, 2, 2, 1]", "45489.51725469279") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createEntropyMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "45489.51725469279", "[0, 2, 1, 0, 0, 2, 1, 0]", "42767.819075818596", "[1, 3, 1, 0, 0, 1, 0, 1]", "40354.7501225414", "[0, 3, 1, 0, 3, 2, 1, 0]", "40725.592069456696", "[1, 4, 0, 2, 1, 2, 2, 0]", "39655.00302684849", "[1, 4, 0, 2, 3, 1, 2, 1]", "42399.4477289995", "[1, 4, 0, 2, 3, 2, 2, 1]", "43142.96542848049", "[1, 4, 1, 2, 3, 2, 2, 1]", "45489.51725469279") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createEntropyMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "449310.02427120315", "[0, 0, 1, 0, 2, 1, 0, 1]", "429011.0737318591", "[0, 0, 0, 2, 0, 2, 1, 1]", "433211.63386516273", "[0, 3, 1, 2, 2, 2, 1, 0]", "419849.80816635164", "[1, 3, 0, 2, 3, 1, 1, 1]", "386566.4801309516", "[0, 4, 1, 1, 3, 2, 2, 1]", "398400.0741806447", "[1, 4, 0, 2, 3, 2, 2, 1]", "432509.90130443755", "[1, 4, 1, 2, 3, 2, 2, 1]", "455884.9365769584") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createEntropyMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "44045.8432426865", "[0, 4, 0, 0, 0, 2, 0, 0]", "35165.5279474891", "[1, 3, 0, 2, 3, 0, 0, 0]", "34190.971456888", "[1, 2, 0, 2, 2, 2, 0, 0]", "32376.146259336", "[1, 1, 0, 1, 3, 1, 2, 0]", "29759.4344043658", "[0, 4, 1, 0, 2, 2, 1, 1]", "33050.0222655427", "[0, 3, 0, 1, 3, 2, 2, 1]", "33536.3829378938", "[1, 4, 1, 2, 3, 2, 2, 1]", "45489.51725469279") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createEntropyMetric(false)).addPrivacyModel(new RecursiveCLDiversity("occupation", 4.0, 5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "335625.27531107684", "[1, 0, 0, 1, 0, 1, 1, 0]", "269022.15611043444", "[1, 1, 0, 2, 0, 0, 2, 0]", "265789.4550967233", "[0, 4, 0, 1, 1, 1, 2, 0]", "305046.81978387875", "[1, 3, 0, 1, 0, 2, 1, 1]", "287007.6920890993", "[0, 4, 0, 0, 2, 2, 2, 0]", "300729.7507624169", "[0, 0, 1, 2, 3, 2, 2, 0]", "237792.2725419112", "[1, 4, 1, 2, 3, 2, 2, 1]", "455884.9365769584") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createDiscernabilityMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "6885660.0", "[1, 1, 0, 2, 3, 1, 1, 1]", "870864.0", "[0, 2, 1, 2, 3, 0, 2, 1]", "1357586.0", "[0, 2, 0, 2, 3, 2, 2, 1]", "903615.0", "[0, 4, 1, 2, 1, 2, 2, 1]", "1801778.0", "[1, 4, 1, 2, 3, 2, 0, 1]", "5077072.0", "[1, 4, 0, 2, 2, 2, 2, 1]", "3326891.0", "[1, 4, 0, 2, 3, 2, 2, 1]", "6721120.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "9096256.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createDiscernabilityMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "8425679.0", "[1, 2, 1, 1, 3, 2, 0, 1]", "902172.0", "[1, 3, 1, 1, 0, 2, 2, 1]", "735082.0", "[0, 4, 1, 2, 1, 2, 2, 1]", "1801778.0", "[1, 3, 1, 2, 2, 2, 2, 1]", "1844009.0", "[1, 4, 1, 2, 3, 2, 2, 0]", "5706370.0", "[1, 4, 1, 2, 3, 2, 1, 1]", "6878769.0", "[1, 3, 1, 2, 3, 2, 2, 1]", "3699562.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "9096256.0") },
                                              /* 40 */{ new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createDiscernabilityMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "9096256.0", "[0, 0, 0, 2, 2, 2, 1, 1]", "8829545.0", "[0, 4, 1, 2, 2, 1, 1, 1]", "5450097.0", "[1, 4, 1, 0, 3, 2, 1, 1]", "3582719.0", "[0, 4, 1, 2, 3, 1, 2, 1]", "7029217.0", "[1, 4, 1, 1, 3, 2, 2, 1]", "4565056.0", "[0, 4, 1, 2, 3, 2, 2, 1]", "5135656.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "9096256.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createDiscernabilityMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "8.91711567E8", "[1, 3, 0, 1, 0, 1, 0, 0]", "6.67520294E8", "[0, 4, 1, 2, 0, 0, 2, 0]", "6.37878686E8", "[0, 4, 0, 2, 3, 1, 2, 0]", "6.20786384E8", "[1, 4, 1, 0, 3, 2, 2, 1]", "3.12513049E8", "[1, 4, 0, 2, 3, 2, 2, 1]", "6.8139216E8", "[1, 4, 1, 2, 3, 2, 2, 1]", "9.09746244E8") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createDiscernabilityMetric(false)).addPrivacyModel(new KAnonymity(5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "4.63536157E8", "[0, 0, 1, 0, 3, 2, 0, 0]", "1.10335369E8", "[1, 2, 0, 2, 2, 1, 0, 0]", "5.5896618E7", "[1, 4, 1, 0, 0, 1, 2, 0]", "5.2791351E7", "[1, 4, 1, 0, 3, 1, 2, 0]", "1.85428139E8", "[1, 4, 1, 2, 3, 1, 2, 0]", "5.20780604E8", "[0, 4, 1, 2, 3, 2, 1, 1]", "3.8959458E8", "[0, 4, 0, 2, 3, 2, 2, 1]", "3.92187826E8", "[1, 4, 0, 2, 3, 2, 2, 1]", "6.8139216E8", "[1, 4, 1, 2, 3, 2, 2, 1]", "9.09746244E8") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createDiscernabilityMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "9096256.0", "[0, 3, 0, 0, 2, 2, 2, 0]", "6825570.0", "[0, 4, 1, 2, 3, 2, 1, 0]", "6401145.0", "[0, 4, 1, 2, 1, 2, 2, 1]", "4418089.0", "[0, 4, 1, 1, 3, 2, 2, 1]", "4653635.0", "[1, 4, 1, 1, 3, 2, 2, 1]", "4565056.0", "[0, 4, 1, 2, 3, 2, 2, 1]", "5135656.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "9096256.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createDiscernabilityMetric(false)).addPrivacyModel(new HierarchicalDistanceTCloseness("occupation", 0.2, Hierarchy.create("./data/adult_hierarchy_occupation.csv", StandardCharsets.UTF_8, ';'))), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "8.91711567E8", "[0, 2, 1, 2, 2, 1, 1, 0]", "7.13605442E8", "[0, 4, 1, 1, 2, 1, 2, 0]", "5.90108018E8", "[0, 4, 1, 1, 2, 2, 2, 1]", "5.89242303E8", "[1, 4, 1, 2, 3, 1, 2, 1]", "8.32183399E8", "[1, 4, 0, 2, 3, 2, 2, 1]", "6.8139216E8", "[1, 4, 1, 2, 3, 2, 2, 1]", "9.09746244E8") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createDiscernabilityMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "8705518.0", "[1, 2, 1, 2, 2, 1, 1, 1]", "1217221.0", "[1, 2, 1, 1, 3, 1, 2, 1]", "1243050.0", "[1, 4, 1, 0, 3, 2, 2, 0]", "2183887.0", "[0, 4, 1, 1, 3, 2, 2, 0]", "2051604.0", "[0, 4, 1, 1, 3, 2, 2, 1]", "2876596.0", "[1, 4, 1, 2, 3, 2, 2, 0]", "5706370.0", "[1, 4, 1, 1, 3, 2, 2, 1]", "4565056.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "9096256.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createDiscernabilityMetric(false)).addPrivacyModel(new RecursiveCLDiversity("occupation", 4.0, 5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "6.05615358E8", "[1, 1, 1, 0, 2, 1, 0, 0]", "1.74006193E8", "[0, 1, 0, 2, 3, 0, 2, 1]", "9.7194221E7", "[1, 4, 1, 2, 3, 2, 0, 0]", "3.52858084E8", "[0, 3, 1, 1, 3, 2, 2, 1]", "1.23067799E8", "[1, 1, 1, 2, 3, 2, 2, 1]", "9.786802E7", "[0, 2, 1, 2, 3, 2, 2, 1]", "1.08443178E8", "[1, 4, 1, 2, 2, 2, 2, 1]", "4.46695226E8", "[0, 4, 1, 2, 3, 2, 2, 1]", "5.11031924E8", "[1, 4, 1, 2, 3, 2, 2, 1]", "9.09746244E8") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createDiscernabilityMetric(false)).addPrivacyModel(new KAnonymity(5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "4.63536157E8", "[0, 0, 1, 0, 3, 0, 0, 0]", "1.7590937E8", "[1, 2, 0, 0, 1, 1, 0, 1]", "8.2826744E7", "[1, 1, 0, 1, 3, 0, 1, 0]", "7.7668128E7", "[1, 2, 0, 2, 0, 1, 1, 0]", "6.2223871E7", "[0, 3, 1, 1, 1, 2, 0, 0]", "3.4129719E7", "[1, 0, 0, 2, 2, 2, 1, 0]", "4.7522592E7", "[1, 4, 1, 1, 0, 1, 1, 0]", "5.96868E7", "[1, 2, 1, 1, 3, 1, 1, 1]", "7.6074385E7", "[1, 4, 1, 2, 3, 2, 2, 1]", "9.09746244E8") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createDiscernabilityMetric(false)).addPrivacyModel(new KAnonymity(5)), "RAMNTALL", "./data/cup.csv", "[0, 0, 0, 0, 0, 0, 0]", "4.024760481E9", "[0, 4, 1, 0, 1, 1, 2]", "3.493495119E9", "[4, 1, 0, 1, 0, 2, 2]", "1.80620587E8", "[3, 4, 0, 1, 1, 4, 1]", "5.9389911E7", "[0, 4, 1, 2, 1, 4, 2]", "9.78942721E8", "[3, 3, 0, 2, 0, 3, 3]", "6.3965169E7", "[2, 1, 1, 2, 0, 4, 4]", "5.37146807E8", "[2, 2, 1, 2, 1, 4, 4]", "2.34706833E8", "[4, 4, 1, 2, 0, 2, 4]", "2.64909869E8", "[5, 4, 1, 2, 1, 4, 4]", "4.024760481E9") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createDiscernabilityMetric(false)).addPrivacyModel(new KAnonymity(5)), "istatenum", "./data/fars.csv", "[0, 0, 0, 0, 0, 0, 0]", "4.361447303E9", "[0, 0, 0, 2, 1, 0, 0]", "1.416769273E9", "[0, 0, 0, 1, 0, 0, 2]", "2.836970255E9", "[0, 0, 2, 0, 1, 2, 0]", "1.758832303E9", "[0, 1, 0, 3, 0, 2, 0]", "5.34956827E8", "[1, 1, 3, 2, 0, 1, 1]", "1.94309871E8", "[4, 0, 0, 2, 0, 1, 2]", "1.125507537E9", "[4, 2, 0, 2, 1, 1, 0]", "4.93648513E8", "[4, 2, 1, 3, 0, 2, 0]", "3.76691875E8", "[5, 2, 3, 3, 1, 2, 2]", "1.0188277969E10") },
                                              /* 50 */{ new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createDiscernabilityMetric(false)).addPrivacyModel(new KAnonymity(5)), "Highest level of school completed", "./data/atus.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "3.2756856071E10", "[0, 1, 0, 1, 1, 0, 0, 0]", "1.8309261099E10", "[0, 1, 0, 1, 1, 0, 0, 1]", "1.7413624699E10", "[0, 0, 0, 0, 1, 2, 2, 0]", "1.3879649691E10", "[0, 0, 1, 0, 1, 1, 0, 2]", "1.8970099543E10", "[0, 0, 0, 1, 0, 2, 0, 2]", "1.9759014883E10", "[0, 4, 0, 0, 0, 2, 1, 0]", "6.703138111E9", "[2, 1, 0, 2, 1, 1, 1, 0]", "1.6201432191E10", "[1, 2, 0, 1, 1, 1, 0, 2]", "1.3457931051E10", "[2, 5, 1, 2, 2, 2, 2, 2]", "2.90793798009E11") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createDiscernabilityMetric(false)).addPrivacyModel(new KAnonymity(5)), "EDUC", "./data/ihis.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "6.0229370151E11", "[1, 0, 0, 0, 2, 0, 0, 0]", "8.9751254021E10", "[1, 2, 1, 0, 0, 0, 0, 0]", "9.84448153E10", "[0, 2, 0, 1, 0, 0, 0, 1]", "8.6775063078E10", "[0, 1, 0, 1, 1, 2, 0, 0]", "6.79066454E10", "[0, 1, 0, 1, 0, 2, 1, 0]", "1.20773461676E11", "[2, 0, 1, 0, 0, 0, 1, 1]", "3.8433249494E10", "[1, 1, 0, 1, 0, 0, 1, 1]", "2.9865741737E10", "[0, 2, 1, 2, 0, 2, 0, 1]", "7.552215892E9", "[5, 2, 2, 3, 4, 2, 1, 1]", "1.424451798016E12") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createDiscernabilityMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "8425679.0", "[0, 2, 0, 0, 2, 0, 1, 1]", "2529631.0", "[0, 4, 1, 0, 0, 2, 1, 1]", "1309104.0", "[1, 2, 1, 0, 1, 1, 2, 1]", "1098972.0", "[0, 3, 1, 1, 3, 1, 1, 0]", "1012071.0", "[1, 2, 1, 2, 1, 2, 0, 1]", "1073238.0", "[1, 4, 0, 2, 3, 2, 2, 0]", "4168425.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "9096256.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createDiscernabilityMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "9096256.0", "[1, 1, 0, 0, 2, 2, 2, 0]", "6456349.0", "[0, 3, 1, 1, 0, 2, 2, 0]", "7102183.0", "[1, 3, 0, 0, 2, 1, 1, 1]", "5832609.0", "[1, 2, 1, 2, 2, 1, 2, 0]", "4210607.0", "[1, 4, 0, 1, 3, 2, 2, 1]", "2776871.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "9096256.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createDiscernabilityMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "8.91711567E8", "[1, 0, 1, 0, 0, 1, 1, 1]", "7.52467594E8", "[0, 1, 1, 2, 2, 0, 1, 1]", "7.30323768E8", "[1, 3, 0, 1, 2, 0, 1, 1]", "5.68438002E8", "[1, 1, 1, 1, 0, 2, 2, 1]", "4.76568155E8", "[1, 4, 0, 2, 3, 1, 2, 1]", "6.51069629E8", "[1, 4, 1, 1, 3, 2, 2, 1]", "4.56853172E8", "[1, 4, 1, 2, 3, 2, 2, 1]", "9.09746244E8") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createDiscernabilityMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "8705518.0", "[0, 1, 0, 2, 1, 0, 1, 1]", "3544067.0", "[1, 1, 0, 1, 3, 0, 0, 1]", "2798834.0", "[0, 1, 1, 1, 3, 2, 2, 0]", "818055.0", "[1, 1, 1, 2, 3, 1, 1, 1]", "1103295.0", "[1, 4, 1, 1, 2, 1, 2, 0]", "1965745.0", "[0, 4, 1, 2, 3, 1, 2, 0]", "3022313.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "9096256.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createDiscernabilityMetric(false)).addPrivacyModel(new RecursiveCLDiversity("occupation", 4.0, 5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "6.05615358E8", "[1, 1, 1, 1, 0, 0, 1, 0]", "2.32827528E8", "[1, 0, 1, 0, 1, 2, 0, 1]", "2.66210213E8", "[1, 0, 1, 1, 3, 1, 1, 0]", "7.8123768E7", "[0, 2, 1, 1, 2, 2, 0, 1]", "1.11508216E8", "[0, 1, 0, 0, 3, 2, 2, 1]", "5.1815769E7", "[1, 3, 0, 1, 3, 1, 0, 1]", "1.05961387E8", "[1, 4, 1, 2, 3, 2, 2, 1]", "9.09746244E8") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createDiscernabilityMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "7832.0", "[0, 0, 0, 1, 2, 2, 0, 1]", "19708.0", "[1, 2, 1, 1, 0, 0, 2, 0]", "148000.0", "[0, 4, 0, 1, 0, 2, 2, 1]", "424500.0", "[0, 2, 1, 2, 3, 2, 2, 1]", "1104390.0", "[1, 4, 1, 2, 1, 2, 2, 1]", "3182632.0", "[0, 4, 0, 2, 3, 2, 2, 1]", "3916464.0", "[1, 4, 1, 1, 3, 2, 2, 1]", "4565056.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "9096256.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createDiscernabilityMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "7832.0", "[0, 4, 0, 1, 3, 1, 2, 0]", "1362238.0", "[0, 4, 0, 2, 2, 0, 2, 1]", "1732612.0", "[0, 4, 0, 2, 3, 1, 2, 1]", "3740386.0", "[0, 4, 1, 2, 3, 2, 2, 0]", "3147790.0", "[0, 4, 1, 2, 2, 2, 2, 1]", "2507114.0", "[1, 4, 1, 0, 3, 2, 2, 1]", "3137494.0", "[1, 4, 1, 2, 3, 2, 2, 0]", "5706370.0", "[1, 4, 1, 2, 2, 2, 2, 1]", "4454190.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "9096256.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createDiscernabilityMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "7832.0", "[0, 0, 0, 1, 2, 0, 2, 0]", "21488.0", "[1, 1, 1, 1, 2, 1, 1, 1]", "197222.0", "[0, 4, 1, 2, 3, 0, 2, 0]", "2622066.0", "[0, 4, 1, 1, 3, 2, 2, 1]", "2876596.0", "[0, 4, 1, 2, 3, 2, 2, 1]", "5135656.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "9096256.0") },
                                              /* 60 */{ new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createDiscernabilityMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "485542.0", "[0, 1, 0, 0, 1, 0, 0, 1]", "4544210.0", "[1, 0, 0, 1, 3, 2, 2, 1]", "8524648.0", "[0, 4, 1, 2, 1, 2, 2, 1]", "1.80221352E8", "[1, 4, 0, 2, 3, 1, 2, 1]", "6.46520772E8", "[1, 4, 1, 1, 3, 2, 2, 1]", "4.56853172E8", "[0, 4, 1, 2, 3, 2, 2, 1]", "5.11031924E8", "[1, 4, 1, 2, 3, 2, 2, 1]", "9.09746244E8") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createDiscernabilityMetric(true)).addPrivacyModel(new KAnonymity(5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "485542.0", "[1, 1, 0, 1, 0, 2, 0, 0]", "4426432.0", "[1, 0, 1, 1, 3, 2, 2, 0]", "8461812.0", "[1, 4, 1, 1, 2, 2, 0, 0]", "9.6950278E7", "[0, 4, 1, 1, 1, 2, 2, 1]", "1.01990664E8", "[1, 4, 1, 2, 2, 2, 1, 0]", "2.1530661E8", "[1, 4, 1, 1, 3, 2, 0, 1]", "2.60892746E8", "[1, 4, 1, 2, 3, 2, 2, 0]", "5.6957378E8", "[1, 3, 1, 2, 3, 2, 2, 1]", "3.6770985E8", "[1, 4, 1, 2, 3, 2, 2, 1]", "9.09746244E8") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createDiscernabilityMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "7832.0", "[0, 3, 0, 0, 0, 1, 2, 0]", "105264.0", "[1, 0, 1, 2, 2, 1, 2, 0]", "66364.0", "[0, 3, 1, 2, 0, 2, 2, 1]", "429404.0", "[1, 4, 1, 2, 3, 1, 2, 1]", "8334570.0", "[0, 4, 1, 2, 3, 2, 2, 1]", "5135656.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "9096256.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createDiscernabilityMetric(true)).addPrivacyModel(new HierarchicalDistanceTCloseness("occupation", 0.2, Hierarchy.create("./data/adult_hierarchy_occupation.csv", StandardCharsets.UTF_8, ';'))), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "485542.0", "[0, 0, 1, 1, 0, 0, 0, 0]", "709192.0", "[1, 0, 1, 0, 1, 0, 0, 1]", "1927858.0", "[1, 4, 1, 0, 3, 2, 1, 1]", "2.3670797E8", "[1, 4, 1, 0, 3, 2, 2, 1]", "3.11880088E8", "[1, 4, 1, 1, 3, 2, 2, 1]", "4.56853172E8", "[0, 4, 1, 2, 3, 2, 2, 1]", "5.11031924E8", "[1, 4, 1, 2, 3, 2, 2, 1]", "9.09746244E8") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createDiscernabilityMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "7832.0", "[1, 0, 0, 1, 0, 1, 1, 1]", "17440.0", "[0, 4, 0, 0, 3, 0, 1, 0]", "698824.0", "[0, 3, 0, 2, 2, 0, 0, 1]", "403352.0", "[1, 4, 1, 2, 3, 2, 1, 0]", "4355544.0", "[1, 4, 1, 1, 2, 2, 2, 1]", "2239008.0", "[1, 4, 1, 2, 3, 2, 2, 0]", "5706370.0", "[1, 4, 1, 1, 3, 2, 2, 1]", "4565056.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "9096256.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createDiscernabilityMetric(true)).addPrivacyModel(new RecursiveCLDiversity("occupation", 4.0, 5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "485542.0", "[0, 2, 0, 1, 1, 0, 2, 0]", "1.1562268E7", "[1, 4, 0, 0, 2, 2, 0, 0]", "4.5032754E7", "[1, 3, 1, 0, 3, 2, 0, 0]", "5.8333584E7", "[1, 4, 1, 0, 2, 2, 2, 1]", "1.54396508E8", "[1, 4, 0, 0, 3, 2, 2, 1]", "2.4144756E8", "[1, 4, 1, 1, 3, 1, 2, 1]", "4.17158014E8", "[0, 4, 1, 1, 3, 2, 2, 1]", "2.90180796E8", "[1, 2, 1, 2, 3, 2, 2, 1]", "1.9061966E8", "[1, 4, 1, 2, 3, 2, 2, 1]", "9.09746244E8") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createDiscernabilityMetric(true)).addPrivacyModel(new KAnonymity(5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "485542.0", "[1, 1, 1, 2, 2, 0, 0, 0]", "1.7040684E7", "[1, 4, 0, 1, 0, 0, 0, 1]", "3.5514078E7", "[0, 1, 1, 0, 2, 2, 0, 1]", "8651570.0", "[1, 4, 0, 0, 0, 0, 1, 1]", "3.3004132E7", "[0, 3, 1, 1, 0, 0, 2, 1]", "2.1394404E7", "[0, 3, 0, 2, 2, 0, 2, 0]", "4.4390778E7", "[0, 4, 1, 1, 2, 0, 1, 1]", "9.1157482E7", "[1, 3, 1, 0, 3, 0, 2, 1]", "1.18940424E8", "[1, 4, 1, 2, 3, 2, 2, 1]", "9.09746244E8") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createDiscernabilityMetric(true)).addPrivacyModel(new KAnonymity(5)), "RAMNTALL", "./data/cup.csv", "[0, 0, 0, 0, 0, 0, 0]", "63457.0", "[0, 1, 1, 1, 0, 3, 2]", "94701.0", "[5, 3, 0, 2, 1, 0, 0]", "9939939.0", "[4, 4, 1, 1, 0, 0, 1]", "7392427.0", "[0, 3, 0, 2, 0, 3, 3]", "157897.0", "[4, 3, 0, 0, 1, 3, 1]", "1.4883871E7", "[2, 1, 1, 1, 0, 4, 3]", "736107.0", "[3, 1, 1, 2, 0, 1, 4]", "6117561.0", "[4, 4, 0, 2, 1, 0, 3]", "1.5347427E7", "[5, 4, 1, 2, 1, 4, 4]", "4.024760481E9") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createDiscernabilityMetric(true)).addPrivacyModel(new KAnonymity(5)), "istatenum", "./data/fars.csv", "[0, 0, 0, 0, 0, 0, 0]", "9306905.0", "[0, 0, 1, 2, 0, 0, 0]", "1.0125669E7", "[0, 2, 1, 0, 0, 1, 1]", "1.6050723E7", "[1, 2, 2, 0, 1, 0, 0]", "7.4340471E7", "[0, 2, 3, 0, 1, 2, 0]", "1.7055517E7", "[2, 1, 1, 0, 1, 1, 2]", "4.90226573E8", "[2, 2, 0, 3, 1, 1, 0]", "1.47217591E8", "[0, 1, 3, 0, 1, 2, 2]", "5.8048433E7", "[2, 2, 3, 3, 1, 0, 2]", "6.38369221E8", "[5, 2, 3, 3, 1, 2, 2]", "1.0188277969E10") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createDiscernabilityMetric(true)).addPrivacyModel(new KAnonymity(5)), "Highest level of school completed", "./data/atus.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "2.241709429E9", "[0, 1, 0, 0, 0, 1, 0, 0]", "2.408734021E9", "[2, 0, 0, 0, 1, 1, 0, 0]", "8.601519003E9", "[0, 0, 1, 1, 1, 1, 0, 0]", "2.575758263E9", "[0, 2, 0, 0, 1, 1, 0, 1]", "2.674947445E9", "[1, 0, 1, 1, 1, 1, 0, 1]", "4.935458395E9", "[0, 0, 1, 0, 2, 2, 0, 1]", "8.282531415E9", "[0, 3, 1, 2, 0, 1, 1, 0]", "5.294383109E9", "[1, 5, 0, 2, 0, 1, 0, 0]", "9.151549775E9", "[2, 5, 1, 2, 2, 2, 2, 2]", "2.90793798009E11") },
                                              /* 70 */{ new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createDiscernabilityMetric(true)).addPrivacyModel(new KAnonymity(5)), "EDUC", "./data/ihis.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "9642324.0", "[0, 2, 0, 0, 0, 0, 1, 0]", "6.1794606E7", "[0, 0, 0, 1, 1, 1, 1, 0]", "1.50060262E8", "[0, 0, 0, 0, 2, 0, 1, 1]", "2.0978252E8", "[0, 1, 1, 3, 0, 0, 0, 0]", "8.103245E7", "[1, 0, 2, 0, 1, 2, 0, 0]", "9.8169505E8", "[5, 0, 0, 1, 0, 0, 1, 0]", "2.7161538E8", "[2, 1, 1, 1, 2, 1, 0, 1]", "6.56513789E9", "[1, 2, 1, 3, 0, 2, 0, 1]", "1.712344072E9", "[5, 2, 2, 3, 4, 2, 1, 1]", "1.424451798016E12") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createDiscernabilityMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "7832.0", "[1, 4, 0, 1, 0, 1, 0, 0]", "295624.0", "[1, 3, 0, 0, 2, 0, 0, 1]", "280638.0", "[1, 2, 1, 1, 3, 1, 0, 0]", "441048.0", "[0, 2, 1, 2, 3, 1, 1, 0]", "504494.0", "[0, 2, 1, 0, 3, 2, 1, 1]", "439116.0", "[0, 4, 1, 0, 2, 2, 1, 1]", "814530.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "9096256.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createDiscernabilityMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "7832.0", "[0, 0, 0, 0, 1, 0, 0, 0]", "10700.0", "[0, 3, 0, 0, 2, 2, 2, 0]", "260752.0", "[0, 4, 0, 2, 0, 2, 1, 1]", "598446.0", "[1, 3, 0, 2, 2, 1, 2, 1]", "1279744.0", "[1, 4, 0, 2, 3, 2, 2, 1]", "6721120.0", "[0, 4, 1, 2, 3, 2, 2, 1]", "5135656.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "9096256.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createDiscernabilityMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "485542.0", "[1, 3, 0, 1, 0, 0, 0, 0]", "1.2523398E7", "[0, 0, 1, 1, 0, 2, 0, 1]", "996236.0", "[1, 4, 1, 0, 0, 0, 1, 0]", "2.8401414E7", "[0, 3, 0, 1, 2, 0, 1, 1]", "3.2004598E7", "[0, 4, 0, 2, 3, 2, 2, 1]", "3.92187826E8", "[1, 4, 1, 1, 3, 2, 2, 1]", "4.56853172E8", "[1, 4, 1, 2, 3, 2, 2, 1]", "9.09746244E8") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createDiscernabilityMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "7832.0", "[0, 0, 0, 0, 2, 2, 2, 0]", "20632.0", "[1, 4, 1, 1, 0, 1, 1, 0]", "497836.0", "[0, 4, 0, 2, 1, 0, 2, 0]", "818158.0", "[0, 3, 1, 2, 0, 2, 1, 1]", "337516.0", "[0, 1, 1, 1, 3, 2, 2, 1]", "358816.0", "[0, 4, 0, 1, 3, 2, 2, 0]", "1424494.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "9096256.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createDiscernabilityMetric(true)).addPrivacyModel(new RecursiveCLDiversity("occupation", 4.0, 5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "485542.0", "[0, 0, 0, 1, 1, 1, 0, 1]", "1228268.0", "[0, 4, 0, 0, 1, 1, 0, 0]", "2.1800156E7", "[0, 0, 1, 2, 0, 2, 2, 0]", "1749754.0", "[0, 2, 0, 1, 3, 2, 0, 1]", "2.9219442E7", "[0, 3, 1, 0, 3, 2, 1, 0]", "4.78953E7", "[0, 0, 1, 1, 3, 2, 2, 1]", "7237306.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "9.09746244E8") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createEntropyMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[1, 3, 1, 1, 1, 0, 1, 0]", "25955.2513010263", "[0, 2, 1, 0, 3, 0, 2, 1]", "27552.822806489796", "[1, 4, 1, 1, 1, 2, 2, 1]", "37223.2491248282", "[1, 4, 0, 0, 3, 2, 2, 1]", "37632.4410227256", "[1, 1, 1, 2, 3, 2, 2, 1]", "35402.43619338381", "[1, 4, 1, 1, 3, 2, 2, 0]", "40045.962293849494", "[1, 4, 1, 1, 2, 2, 2, 1]", "39177.7411830619", "[1, 4, 1, 2, 3, 2, 2, 0]", "43053.85980251069", "[1, 4, 1, 2, 3, 2, 2, 1]", "45489.51725469279") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createEntropyMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[1, 1, 0, 1, 3, 1, 1, 1]", "27193.393079439", "[0, 4, 1, 0, 1, 0, 2, 1]", "29594.098829977796", "[0, 4, 1, 1, 0, 2, 2, 0]", "28485.683777678998", "[0, 4, 0, 2, 3, 1, 2, 1]", "39349.664613512796", "[0, 2, 1, 2, 3, 2, 2, 1]", "35461.300017243804", "[1, 3, 1, 2, 3, 2, 2, 0]", "38454.461369895296", "[0, 4, 1, 2, 3, 2, 2, 1]", "42760.946661935195", "[1, 4, 1, 2, 3, 2, 2, 1]", "45489.51725469279") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createEntropyMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[1, 0, 1, 2, 1, 2, 1, 1]", "21503.488113251096", "[1, 4, 1, 2, 1, 1, 1, 0]", "34986.0209793801", "[0, 4, 1, 2, 1, 2, 2, 1]", "37502.5760407318", "[0, 2, 1, 2, 3, 2, 2, 1]", "35461.300017243804", "[1, 4, 1, 1, 3, 2, 2, 1]", "42481.619746031596", "[1, 4, 1, 2, 3, 2, 2, 1]", "45489.51725469279") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createEntropyMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 2, 0, 0, 0, 1, 1, 0]", "136063.4424410223", "[0, 3, 0, 2, 2, 2, 0, 1]", "283200.5290883316", "[1, 4, 1, 2, 3, 2, 0, 1]", "413313.0671678027", "[0, 4, 1, 2, 2, 2, 2, 1]", "395506.9708302615", "[1, 4, 1, 1, 3, 2, 2, 1]", "425817.7142571098", "[0, 4, 1, 2, 3, 2, 2, 1]", "428467.2965004933", "[1, 4, 1, 2, 3, 2, 2, 1]", "455884.9365769584") },
                                              /* 80 */{ new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createEntropyMetric(true)).addPrivacyModel(new KAnonymity(5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 2, 1, 0, 2, 2, 2, 1]", "267294.8596833069", "[0, 4, 1, 0, 3, 2, 0, 1]", "331008.3103741931", "[1, 4, 1, 0, 1, 1, 2, 1]", "338257.19469914096", "[1, 1, 1, 1, 2, 2, 2, 1]", "291660.2013216374", "[1, 4, 1, 2, 3, 2, 0, 0]", "388894.9425140205", "[0, 4, 1, 2, 1, 2, 2, 1]", "376288.0867932696", "[1, 4, 1, 0, 2, 2, 2, 1]", "368037.49418958207", "[0, 4, 1, 0, 3, 2, 2, 1]", "373580.1797833488", "[1, 4, 1, 2, 3, 2, 2, 1]", "455884.9365769584") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createEntropyMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 1, 0, 2, 1, 2, 1, 0]", "20798.2965670231", "[0, 0, 0, 1, 3, 2, 2, 0]", "17987.9193343584", "[0, 4, 1, 2, 1, 2, 2, 1]", "37502.5760407318", "[0, 3, 1, 2, 3, 2, 2, 1]", "38161.54822931981", "[0, 4, 1, 2, 3, 2, 2, 1]", "42760.946661935195", "[1, 4, 1, 2, 3, 2, 2, 1]", "45489.51725469279") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createEntropyMetric(true)).addPrivacyModel(new HierarchicalDistanceTCloseness("occupation", 0.2, Hierarchy.create("./data/adult_hierarchy_occupation.csv", StandardCharsets.UTF_8, ';'))), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 3, 0, 0, 3, 2, 1, 0]", "261460.7379981554", "[1, 3, 1, 0, 1, 1, 2, 0]", "267479.5329851054", "[0, 4, 0, 2, 3, 1, 2, 0]", "370112.7211207411", "[1, 4, 1, 2, 3, 1, 2, 1]", "445323.52112350916", "[1, 4, 1, 1, 3, 2, 2, 1]", "425817.7142571098", "[0, 4, 1, 2, 3, 2, 2, 1]", "428467.2965004933", "[1, 4, 1, 2, 3, 2, 2, 1]", "455884.9365769584") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createEntropyMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 1, 0, 1, 2, 0, 2, 1]", "21527.3337434957", "[1, 0, 1, 1, 2, 2, 2, 0]", "19804.2887675027", "[0, 4, 1, 1, 3, 2, 2, 0]", "37317.391701091896", "[1, 4, 1, 2, 3, 2, 1, 0]", "41263.99624564949", "[1, 4, 1, 1, 3, 2, 2, 0]", "40045.962293849494", "[1, 4, 1, 1, 3, 2, 2, 1]", "42481.619746031596", "[1, 4, 0, 2, 3, 2, 2, 1]", "43097.83985133639", "[1, 4, 1, 2, 3, 2, 2, 1]", "45489.51725469279") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createEntropyMetric(true)).addPrivacyModel(new RecursiveCLDiversity("occupation", 4.0, 5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 0, 0, 1, 3, 2, 2, 1]", "204767.1792083248", "[1, 2, 1, 2, 2, 2, 0, 1]", "307027.7470677608", "[1, 4, 1, 2, 2, 2, 0, 1]", "380352.7414975709", "[0, 4, 0, 1, 3, 2, 2, 1]", "375025.03890812385", "[1, 2, 1, 1, 3, 2, 2, 1]", "352492.7198272997", "[1, 3, 1, 2, 2, 2, 2, 1]", "376565.07384647324", "[1, 3, 1, 1, 3, 2, 2, 1]", "379458.17719685636", "[1, 3, 1, 2, 3, 2, 2, 1]", "409525.39951670496", "[1, 4, 1, 2, 3, 2, 2, 1]", "455884.9365769584") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createEntropyMetric(true)).addPrivacyModel(new KAnonymity(5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 3, 1, 0, 0, 0, 0, 1]", "171691.4825658487", "[1, 2, 0, 0, 1, 1, 1, 0]", "199172.2955443909", "[1, 2, 1, 1, 1, 1, 0, 0]", "222762.1006036889", "[1, 0, 0, 0, 3, 1, 2, 0]", "172385.3847802626", "[1, 3, 0, 1, 2, 0, 0, 1]", "255464.0788309843", "[0, 4, 0, 2, 3, 0, 0, 0]", "313015.3991510708", "[0, 3, 0, 1, 3, 1, 0, 1]", "275532.2169852656", "[1, 1, 1, 0, 3, 2, 1, 1]", "281833.8877959363", "[1, 4, 1, 2, 3, 2, 2, 1]", "455884.9365769584") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createEntropyMetric(true)).addPrivacyModel(new KAnonymity(5)), "RAMNTALL", "./data/cup.csv", "[0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 1, 0, 0, 1, 4, 0]", "719419.9828839717", "[0, 0, 1, 0, 1, 4, 1]", "826951.7809639904", "[5, 4, 1, 1, 0, 0, 0]", "1387588.9672072092", "[5, 4, 0, 1, 1, 0, 0]", "1600950.7143017333", "[4, 2, 1, 0, 1, 4, 0]", "1494157.1621354986", "[4, 4, 0, 1, 1, 3, 0]", "1710062.966793689", "[4, 0, 0, 2, 1, 2, 4]", "1569758.4542430995", "[5, 4, 1, 1, 0, 0, 4]", "1568472.410778526", "[5, 4, 1, 2, 1, 4, 4]", "2207518.9993976974") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createEntropyMetric(true)).addPrivacyModel(new KAnonymity(5)), "istatenum", "./data/fars.csv", "[0, 0, 0, 0, 0, 0, 0]", "0.0", "[1, 2, 1, 0, 0, 0, 0]", "493787.38967301406", "[2, 0, 0, 3, 0, 0, 0]", "637180.390386303", "[3, 0, 1, 0, 0, 2, 0]", "678456.0696582568", "[1, 1, 1, 0, 0, 1, 2]", "699439.6486618418", "[1, 0, 2, 2, 0, 1, 1]", "721459.0930847721", "[3, 0, 2, 0, 0, 0, 2]", "809975.8664111899", "[4, 0, 1, 0, 0, 2, 1]", "820957.357031652", "[4, 2, 0, 1, 1, 0, 1]", "992605.6157904895", "[5, 2, 3, 3, 1, 2, 2]", "1828114.5308318876") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createEntropyMetric(true)).addPrivacyModel(new KAnonymity(5)), "Highest level of school completed", "./data/atus.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 0, 0, 0, 2, 1, 0, 0]", "1331276.5874308955", "[0, 0, 0, 0, 0, 1, 2, 0]", "914712.958941533", "[0, 0, 0, 1, 0, 0, 2, 1]", "910392.3364476803", "[1, 0, 0, 2, 2, 0, 0, 0]", "2307818.8921633805", "[1, 0, 1, 1, 0, 1, 0, 1]", "1716120.1420457452", "[0, 0, 1, 1, 2, 1, 0, 1]", "2332878.0941211814", "[0, 0, 1, 0, 0, 2, 2, 2]", "2515594.359993568", "[1, 4, 0, 1, 1, 0, 2, 1]", "2998560.937284109", "[2, 5, 1, 2, 2, 2, 2, 2]", "7631154.350031186") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createEntropyMetric(true)).addPrivacyModel(new KAnonymity(5)), "EDUC", "./data/ihis.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 2, 1, 1, 0, 0, 0, 0]", "4711973.671212076", "[0, 2, 0, 2, 0, 0, 0, 0]", "4533497.460732523", "[0, 1, 0, 0, 2, 0, 1, 0]", "6309358.2783013955", "[0, 2, 0, 1, 0, 1, 1, 0]", "5957603.147794448", "[3, 0, 1, 0, 0, 0, 0, 1]", "6112513.785816341", "[2, 2, 0, 1, 0, 1, 0, 0]", "8201562.755925771", "[4, 2, 1, 3, 0, 1, 1, 0]", "1.2993516375412744E7", "[5, 2, 2, 1, 4, 2, 1, 1]", "2.3569887310553566E7", "[5, 2, 2, 3, 4, 2, 1, 1]", "2.5025416064416602E7") },
                                              /* 90 */{ new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createEntropyMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[1, 0, 1, 0, 1, 0, 0, 0]", "8693.5852983235", "[0, 0, 0, 1, 1, 0, 1, 0]", "8496.606774150601", "[1, 4, 1, 2, 0, 0, 0, 0]", "27523.441788101896", "[0, 2, 1, 1, 2, 2, 0, 1]", "24893.8922367602", "[1, 4, 0, 0, 3, 1, 1, 0]", "32387.31536861629", "[0, 3, 1, 1, 1, 2, 1, 1]", "28105.416542593997", "[1, 4, 1, 2, 3, 2, 2, 1]", "45489.51725469279") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createEntropyMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 0, 1, 0, 2, 0, 0, 1]", "10355.1642159817", "[0, 3, 0, 0, 1, 2, 0, 1]", "20790.4696672965", "[1, 2, 0, 0, 2, 1, 2, 1]", "26009.3111699985", "[0, 4, 1, 2, 1, 2, 2, 1]", "37502.5760407318", "[1, 4, 0, 1, 3, 2, 2, 1]", "40089.9423426752", "[1, 4, 0, 2, 3, 2, 2, 1]", "43097.83985133639", "[1, 4, 1, 2, 3, 2, 2, 1]", "45489.51725469279") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createEntropyMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[1, 3, 0, 0, 1, 0, 0, 1]", "211425.30039669652", "[0, 3, 0, 2, 1, 0, 0, 1]", "238894.77703737593", "[0, 2, 1, 1, 0, 2, 2, 1]", "237204.65701670738", "[0, 2, 1, 0, 3, 1, 2, 1]", "289693.7699000895", "[0, 4, 0, 2, 3, 2, 2, 1]", "405092.26122797246", "[1, 4, 0, 2, 3, 2, 2, 1]", "432509.90130443755", "[1, 4, 1, 2, 3, 2, 2, 1]", "455884.9365769584") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createEntropyMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 1, 1, 0, 0, 0, 2, 1]", "15933.680466459302", "[0, 0, 1, 1, 3, 0, 0, 1]", "16116.544098901", "[0, 1, 1, 2, 1, 1, 2, 0]", "23960.2328821747", "[0, 4, 1, 2, 0, 0, 1, 1]", "29696.296799517895", "[0, 4, 0, 2, 3, 1, 2, 0]", "36914.00716133069", "[0, 4, 1, 1, 2, 2, 2, 0]", "34013.5131381222", "[1, 4, 1, 2, 3, 2, 2, 1]", "45489.51725469279") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createEntropyMetric(true)).addPrivacyModel(new RecursiveCLDiversity("occupation", 4.0, 5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 0, 0, 0, 3, 0, 1, 0]", "112475.54734464591", "[0, 2, 1, 0, 2, 0, 0, 1]", "199636.1222601874", "[0, 4, 0, 0, 3, 0, 0, 0]", "258128.2824339263", "[1, 0, 1, 0, 2, 1, 2, 1]", "187218.21903633382", "[0, 2, 1, 0, 3, 2, 1, 0]", "257870.3159011195", "[0, 3, 0, 0, 3, 1, 2, 0]", "268866.0673433432", "[1, 4, 1, 2, 3, 2, 2, 1]", "455884.9365769584") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createHeightMetric()).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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 2, 1, 1, 0, 0, 1, 0]", "5.0", "[1, 0, 1, 2, 3, 1, 0, 1]", "9.0", "[1, 4, 1, 0, 3, 2, 1, 0]", "12.0", "[1, 3, 1, 1, 1, 2, 2, 1]", "12.0", "[1, 4, 0, 2, 3, 2, 2, 0]", "14.0", "[1, 4, 1, 2, 1, 2, 2, 1]", "14.0", "[1, 2, 1, 2, 3, 2, 2, 1]", "14.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "16.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createHeightMetric()).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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 2, 1, 0, 1, 1, 0, 0]", "5.0", "[1, 3, 0, 1, 1, 2, 1, 1]", "10.0", "[1, 3, 1, 2, 3, 2, 2, 0]", "14.0", "[1, 4, 1, 2, 1, 2, 2, 1]", "14.0", "[1, 3, 1, 2, 2, 2, 2, 1]", "14.0", "[1, 3, 0, 2, 3, 2, 2, 1]", "14.0", "[0, 3, 1, 2, 3, 2, 2, 1]", "14.0", "[0, 4, 1, 2, 3, 2, 2, 1]", "15.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "16.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createHeightMetric()).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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 0, 1, 0, 1, 2, 2, 1]", "7.0", "[0, 4, 0, 0, 3, 0, 1, 0]", "8.0", "[1, 4, 0, 0, 3, 2, 0, 0]", "10.0", "[0, 4, 1, 2, 2, 2, 2, 1]", "14.0", "[1, 4, 1, 1, 3, 2, 2, 1]", "15.0", "[0, 4, 1, 2, 3, 2, 2, 1]", "15.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "16.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createHeightMetric()).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("occupation", 0.2, Hierarchy.create("./data/adult_hierarchy_occupation.csv", StandardCharsets.UTF_8, ';'))), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 2, 1, 0, 3, 0, 2, 0]", "8.0", "[1, 4, 0, 1, 1, 1, 0, 1]", "9.0", "[1, 4, 0, 2, 3, 2, 2, 0]", "14.0", "[0, 4, 1, 2, 3, 2, 2, 0]", "14.0", "[0, 4, 1, 1, 3, 2, 2, 1]", "14.0", "[1, 4, 0, 2, 3, 2, 2, 1]", "15.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "16.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createHeightMetric()).addPrivacyModel(new KAnonymity(5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 3, 0, 1, 3, 2, 1, 0]", "10.0", "[0, 4, 1, 1, 3, 0, 0, 1]", "10.0", "[0, 4, 1, 1, 3, 0, 2, 0]", "11.0", "[0, 3, 1, 2, 3, 1, 2, 1]", "13.0", "[1, 4, 1, 0, 2, 2, 2, 1]", "13.0", "[1, 4, 1, 2, 3, 2, 1, 0]", "14.0", "[1, 2, 1, 2, 3, 2, 2, 1]", "14.0", "[0, 3, 1, 2, 3, 2, 2, 1]", "14.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "16.0") },
                                              /* 100 */{ new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createHeightMetric()).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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[1, 4, 0, 1, 0, 2, 0, 0]", "8.0", "[0, 3, 1, 1, 3, 0, 0, 1]", "9.0", "[0, 4, 1, 2, 3, 0, 2, 0]", "12.0", "[1, 4, 1, 2, 2, 2, 2, 1]", "15.0", "[0, 4, 1, 2, 3, 2, 2, 1]", "15.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "16.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createHeightMetric()).addPrivacyModel(new HierarchicalDistanceTCloseness("occupation", 0.2, Hierarchy.create("./data/adult_hierarchy_occupation.csv", StandardCharsets.UTF_8, ';'))), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 3, 1, 0, 2, 0, 2, 0]", "8.0", "[0, 3, 1, 1, 0, 2, 2, 1]", "10.0", "[1, 3, 1, 2, 1, 2, 0, 1]", "11.0", "[0, 4, 1, 2, 1, 2, 2, 1]", "13.0", "[1, 4, 1, 1, 3, 2, 2, 1]", "15.0", "[1, 4, 0, 2, 3, 2, 2, 1]", "15.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "16.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createHeightMetric()).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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[1, 2, 0, 0, 1, 0, 0, 0]", "4.0", "[1, 3, 1, 2, 2, 0, 2, 0]", "11.0", "[1, 4, 1, 2, 3, 2, 1, 0]", "14.0", "[0, 4, 1, 2, 3, 2, 2, 0]", "14.0", "[1, 4, 1, 0, 3, 2, 2, 1]", "14.0", "[0, 4, 1, 1, 3, 2, 2, 1]", "14.0", "[1, 4, 1, 2, 3, 2, 2, 0]", "15.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "16.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createHeightMetric()).addPrivacyModel(new RecursiveCLDiversity("occupation", 4.0, 5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[1, 0, 0, 0, 0, 0, 2, 1]", "4.0", "[0, 4, 0, 2, 2, 0, 1, 1]", "10.0", "[0, 4, 1, 1, 2, 2, 2, 0]", "12.0", "[1, 3, 1, 2, 3, 2, 0, 1]", "13.0", "[1, 4, 1, 2, 2, 2, 2, 0]", "14.0", "[0, 4, 1, 2, 3, 2, 2, 0]", "14.0", "[1, 4, 1, 1, 3, 2, 2, 1]", "15.0", "[1, 4, 0, 2, 3, 2, 2, 1]", "15.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "16.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createHeightMetric()).addPrivacyModel(new KAnonymity(5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 2, 1, 1, 0, 2, 0, 0]", "6.0", "[1, 2, 1, 1, 0, 0, 2, 0]", "7.0", "[1, 1, 0, 2, 2, 0, 0, 1]", "7.0", "[0, 1, 1, 1, 2, 1, 0, 1]", "7.0", "[1, 2, 0, 0, 1, 2, 0, 1]", "7.0", "[0, 2, 1, 1, 2, 1, 1, 0]", "8.0", "[0, 0, 1, 1, 3, 2, 0, 1]", "8.0", "[1, 2, 1, 2, 0, 2, 2, 1]", "11.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "16.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createHeightMetric()).addPrivacyModel(new KAnonymity(5)), "RAMNTALL", "./data/cup.csv", "[0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 4, 1, 2, 0, 0, 0]", "7.0", "[2, 4, 1, 1, 0, 0, 1]", "9.0", "[3, 3, 0, 2, 1, 0, 1]", "10.0", "[0, 3, 0, 0, 0, 3, 4]", "10.0", "[5, 4, 0, 0, 1, 2, 0]", "12.0", "[4, 4, 0, 2, 0, 3, 0]", "13.0", "[5, 3, 0, 0, 1, 0, 4]", "13.0", "[5, 2, 0, 0, 1, 3, 4]", "15.0", "[5, 4, 1, 2, 1, 4, 4]", "21.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createHeightMetric()).addPrivacyModel(new KAnonymity(5)), "istatenum", "./data/fars.csv", "[0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 0, 3, 0, 0, 1, 0]", "4.0", "[1, 0, 2, 0, 0, 1, 1]", "5.0", "[3, 1, 0, 0, 0, 2, 1]", "7.0", "[1, 0, 0, 2, 0, 2, 2]", "7.0", "[2, 1, 2, 0, 1, 0, 2]", "8.0", "[1, 2, 0, 0, 1, 2, 2]", "8.0", "[0, 0, 1, 2, 1, 2, 2]", "8.0", "[2, 2, 3, 0, 1, 2, 0]", "10.0", "[5, 2, 3, 3, 1, 2, 2]", "18.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createHeightMetric()).addPrivacyModel(new KAnonymity(5)), "Highest level of school completed", "./data/atus.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 0, 0, 0, 0, 1, 1, 0]", "2.0", "[2, 0, 0, 1, 0, 0, 0, 0]", "3.0", "[0, 2, 0, 0, 1, 1, 0, 0]", "4.0", "[0, 1, 0, 0, 2, 0, 0, 1]", "4.0", "[0, 1, 0, 1, 0, 1, 0, 1]", "4.0", "[0, 0, 0, 2, 2, 2, 0, 0]", "6.0", "[1, 4, 0, 0, 2, 2, 0, 1]", "10.0", "[2, 1, 1, 2, 1, 1, 0, 2]", "10.0", "[2, 5, 1, 2, 2, 2, 2, 2]", "18.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createHeightMetric()).addPrivacyModel(new KAnonymity(5)), "EDUC", "./data/ihis.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 1, 0, 1, 0, 0, 0, 0]", "2.0", "[1, 0, 0, 1, 0, 1, 1, 0]", "4.0", "[0, 1, 0, 3, 1, 0, 0, 0]", "5.0", "[1, 1, 1, 1, 0, 1, 0, 0]", "5.0", "[4, 0, 0, 2, 0, 0, 1, 0]", "7.0", "[0, 2, 0, 2, 0, 1, 1, 1]", "7.0", "[1, 1, 1, 1, 3, 0, 0, 1]", "8.0", "[5, 1, 0, 3, 0, 0, 0, 0]", "9.0", "[5, 2, 2, 3, 4, 2, 1, 1]", "20.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createHeightMetric()).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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 0, 0, 1, 1, 2, 0, 0]", "4.0", "[1, 4, 1, 0, 0, 1, 0, 1]", "8.0", "[1, 3, 0, 1, 1, 2, 1, 0]", "9.0", "[0, 2, 1, 1, 3, 1, 0, 1]", "9.0", "[0, 4, 0, 1, 3, 1, 1, 0]", "10.0", "[0, 4, 0, 0, 3, 2, 2, 0]", "11.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "16.0") },
                                              /* 110 */{ new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createHeightMetric()).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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 0, 1, 0, 0, 0, 1, 0]", "2.0", "[1, 3, 1, 1, 1, 0, 1, 1]", "9.0", "[1, 2, 1, 2, 0, 1, 2, 1]", "10.0", "[0, 3, 1, 1, 3, 2, 0, 1]", "11.0", "[1, 4, 0, 2, 3, 1, 2, 1]", "14.0", "[1, 4, 0, 2, 3, 2, 2, 1]", "15.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "16.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createHeightMetric()).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("occupation", 0.2, Hierarchy.create("./data/adult_hierarchy_occupation.csv", StandardCharsets.UTF_8, ';'))), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 1, 0, 2, 0, 1, 1, 0]", "5.0", "[0, 1, 0, 1, 0, 2, 0, 1]", "5.0", "[1, 2, 0, 1, 0, 1, 1, 1]", "7.0", "[1, 0, 1, 2, 2, 1, 1, 1]", "9.0", "[0, 4, 0, 2, 3, 2, 2, 1]", "14.0", "[1, 4, 0, 2, 3, 2, 2, 1]", "15.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "16.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createHeightMetric()).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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 2, 1, 0, 0, 0, 0, 0]", "3.0", "[0, 2, 1, 0, 1, 1, 1, 0]", "6.0", "[1, 2, 1, 0, 3, 0, 1, 1]", "9.0", "[1, 1, 1, 2, 3, 1, 0, 1]", "10.0", "[0, 4, 1, 0, 2, 2, 1, 1]", "11.0", "[0, 4, 0, 2, 3, 1, 2, 0]", "12.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "16.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createHeightMetric()).addPrivacyModel(new RecursiveCLDiversity("occupation", 4.0, 5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 0, 0, 0, 2, 2, 0, 1]", "5.0", "[1, 3, 1, 0, 1, 0, 0, 0]", "6.0", "[0, 2, 0, 2, 1, 0, 2, 0]", "7.0", "[1, 0, 0, 1, 3, 1, 0, 1]", "7.0", "[0, 1, 1, 0, 3, 1, 2, 0]", "8.0", "[0, 4, 0, 0, 3, 0, 2, 0]", "9.0", "[1, 4, 1, 2, 3, 2, 2, 1]", "16.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createLossMetric(AggregateFunction.RANK)).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", "[0, 0, 0, 0, 0, 0, 0, 0]", "[0.7566312997, 0.7566312997, 0.7566312997, 0.7566312997, 0.7566312997, 0.7566312997, 0.7566312997, 0.7566312997]", "[1, 1, 0, 2, 0, 2, 0, 0]", "[1.0, 1.0, 1.0, 0.2993931356, 0.2698938992, 0.2698938992, 0.2698938992, 0.2698938992]", "[0, 4, 0, 1, 1, 0, 2, 0]", "[1.0, 1.0, 0.4791666666, 0.2588196286, 0.0805702917, 0.0805702917, 0.0805702917, 0.0805702917]", "[0, 4, 0, 1, 2, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 0.4363947833, 0.3728337754, 0.0089522546, 0.0089522546]", "[0, 4, 1, 2, 1, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.1915119363, 0.0]", "[1, 4, 1, 1, 2, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.431918656, 0.3663793103]", "[1, 3, 1, 2, 2, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.3663793103, 0.1919191919]", "[1, 4, 0, 1, 3, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.431918656, 0.0]", "[1, 4, 1, 2, 3, 2, 2, 0]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0]", "[1, 4, 1, 2, 3, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createLossMetric(AggregateFunction.RANK)).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", "[0, 0, 0, 0, 0, 0, 0, 0]", "[0.9260610079, 0.9260610079, 0.9260610079, 0.9260610079, 0.9260610079, 0.9260610079, 0.9260610079, 0.9260610079]", "[0, 1, 0, 1, 2, 2, 1, 0]", "[1.0, 0.5769230769, 0.5276304155, 0.4642857142, 0.2803030303, 0.25, 0.25, 0.25]", "[1, 4, 0, 1, 3, 1, 1, 0]", "[1.0, 1.0, 1.0, 0.4476679929, 0.3041871921, 0.2926061007, 0.0258620689, 0.0258620689]", "[0, 4, 1, 2, 3, 0, 2, 0]", "[1.0, 1.0, 1.0, 1.0, 1.0, 0.0636604774, 0.0636604774, 0.0636604774]", "[1, 4, 1, 1, 1, 2, 2, 0]", "[1.0, 1.0, 1.0, 1.0, 1.0, 0.4324712643, 0.1920866489, 6.631299E-4]", "[0, 4, 1, 2, 3, 2, 2, 0]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0]", "[0, 4, 1, 2, 2, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.3663793103, 0.0]", "[1, 4, 1, 2, 3, 2, 2, 0]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0]", "[1, 4, 1, 2, 2, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.3663793103]", "[1, 4, 1, 2, 3, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createLossMetric(AggregateFunction.RANK)).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", "[0, 0, 0, 0, 0, 0, 0, 0]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]", "[0, 3, 0, 0, 0, 1, 1, 1]", "[1.0, 0.920187571, 0.9189903846, 0.909707151, 0.8882625994, 0.8882625994, 0.8882625994, 0.8882625994]", "[0, 4, 0, 0, 3, 0, 1, 0]", "[1.0, 1.0, 0.7811671087, 0.6936339522, 0.6936339522, 0.6936339522, 0.6936339522, 0.6936339522]", "[1, 2, 1, 0, 2, 1, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 0.7311450044, 0.6939903846, 0.6162888835, 0.5779177718]", "[1, 4, 1, 2, 2, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.3804597701]", "[0, 4, 1, 2, 3, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0]", "[1, 4, 1, 2, 3, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createLossMetric(AggregateFunction.RANK)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("occupation", 0.2, Hierarchy.create("./data/adult_hierarchy_occupation.csv", StandardCharsets.UTF_8, ';'))), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "[0.9801405742, 0.9801405742, 0.9801405742, 0.9801405742, 0.9801405742, 0.9801405742, 0.9801405742, 0.9801405742]", "[1, 0, 0, 1, 0, 0, 1, 1]", "[1.0, 1.0, 0.9050626616, 0.8700588252, 0.8180823552, 0.8180823552, 0.8180823552, 0.8180823552]", "[0, 4, 0, 0, 3, 0, 1, 0]", "[1.0, 1.0, 0.6857682798, 0.5600755918, 0.5600755918, 0.5600755918, 0.5600755918, 0.5600755918]", "[0, 3, 1, 0, 3, 2, 2, 0]", "[1.0, 1.0, 1.0, 1.0, 0.6055776919, 0.5119023937, 0.5119023937, 0.5119023937]", "[1, 4, 1, 0, 3, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 6.962403E-4]", "[0, 4, 1, 1, 3, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.4331609309, 0.0]", "[1, 4, 1, 2, 3, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createLossMetric(AggregateFunction.RANK)).addPrivacyModel(new KAnonymity(5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "[0.5090179696, 0.5090179696, 0.5090179696, 0.5090179696, 0.5090179696, 0.5090179696, 0.5090179696, 0.5090179696]", "[0, 0, 0, 2, 0, 0, 0, 0]", "[1.0, 0.3843909555, 0.3843909555, 0.3843909555, 0.3843909555, 0.3843909555, 0.3843909555, 0.3843909555]", "[0, 3, 1, 1, 1, 1, 0, 0]", "[1.0, 0.454827266, 0.3009233472, 0.2220594647, 0.221488407, 0.0372985876, 0.0372985876, 0.0372985876]", "[1, 4, 1, 0, 1, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.1899012001, 6.63086E-5]", "[0, 4, 1, 2, 3, 2, 1, 0]", "[1.0, 1.0, 1.0, 1.0, 1.0, 0.2856479771, 0.0, 0.0]", "[0, 4, 1, 1, 3, 1, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 0.4331609309, 0.271754194, 0.0]", "[0, 4, 1, 2, 1, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.1898437327, 0.0]", "[0, 3, 0, 2, 3, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 0.1924014362, 5.967774E-4, 5.967774E-4]", "[0, 4, 0, 2, 3, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0]", "[1, 4, 1, 2, 3, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createLossMetric(AggregateFunction.RANK)).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", "[0, 0, 0, 0, 0, 0, 0, 0]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]", "[0, 3, 1, 2, 1, 1, 1, 1]", "[1.0, 1.0, 1.0, 0.8197707464, 0.8170673076, 0.8040229885, 0.7961042788, 0.747679045]", "[1, 4, 1, 1, 2, 0, 1, 1]", "[1.0, 1.0, 1.0, 1.0, 0.7254641909, 0.6292219274, 0.5879120879, 0.423076923]", "[0, 4, 1, 2, 3, 0, 2, 0]", "[1.0, 1.0, 1.0, 1.0, 1.0, 0.5709549071, 0.5709549071, 0.5709549071]", "[1, 4, 1, 0, 3, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0702917771]", "[1, 4, 1, 1, 3, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.431918656]", "[1, 4, 1, 2, 3, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]") },
                                              /* 120 */{ new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createLossMetric(AggregateFunction.RANK)).addPrivacyModel(new HierarchicalDistanceTCloseness("occupation", 0.2, Hierarchy.create("./data/adult_hierarchy_occupation.csv", StandardCharsets.UTF_8, ';'))), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "[0.9801405742, 0.9801405742, 0.9801405742, 0.9801405742, 0.9801405742, 0.9801405742, 0.9801405742, 0.9801405742]", "[0, 0, 0, 1, 2, 0, 2, 1]", "[1.0, 1.0, 0.9042614327, 0.882043631, 0.808666534, 0.808666534, 0.808666534, 0.808666534]", "[0, 2, 0, 2, 2, 0, 2, 0]", "[1.0, 1.0, 0.8175054704, 0.729792454, 0.7027716994, 0.7027716994, 0.7027716994, 0.7027716994]", "[0, 4, 0, 2, 3, 1, 2, 0]", "[1.0, 1.0, 1.0, 1.0, 0.6553395, 0.5257608911, 0.5257608911, 0.5257608911]", "[1, 4, 1, 0, 3, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 6.962403E-4]", "[0, 4, 1, 2, 3, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0]", "[1, 4, 1, 2, 3, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createLossMetric(AggregateFunction.RANK)).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", "[0, 0, 0, 0, 0, 0, 0, 0]", "[0.9568965517, 0.9568965517, 0.9568965517, 0.9568965517, 0.9568965517, 0.9568965517, 0.9568965517, 0.9568965517]", "[0, 1, 1, 2, 1, 0, 0, 1]", "[1.0, 1.0, 1.0, 0.5344827586, 0.4381145674, 0.4144562334, 0.4144562334, 0.4144562334]", "[1, 2, 0, 2, 3, 0, 2, 0]", "[1.0, 1.0, 1.0, 1.0, 0.1759102965, 0.0935013262, 0.0935013262, 0.0935013262]", "[1, 4, 1, 1, 3, 2, 2, 0]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.431918656, 0.0]", "[1, 3, 0, 2, 3, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.1948664362, 0.0036472148]", "[1, 4, 1, 2, 3, 2, 2, 0]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0]", "[1, 4, 1, 1, 3, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.431918656]", "[1, 4, 1, 2, 3, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createLossMetric(AggregateFunction.RANK)).addPrivacyModel(new RecursiveCLDiversity("occupation", 4.0, 5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "[0.665274186, 0.665274186, 0.665274186, 0.665274186, 0.665274186, 0.665274186, 0.665274186, 0.665274186]", "[0, 1, 0, 1, 1, 2, 2, 0]", "[1.0, 1.0, 0.5110735362, 0.3079835554, 0.1690628183, 0.1340759896, 0.1340759896, 0.1340759896]", "[1, 4, 1, 0, 3, 2, 0, 0]", "[1.0, 1.0, 1.0, 1.0, 1.0, 0.0257608911, 0.0257608911, 0.0257608911]", "[0, 4, 1, 0, 3, 2, 2, 0]", "[1.0, 1.0, 1.0, 1.0, 1.0, 8.951661E-4, 8.951661E-4, 8.951661E-4]", "[1, 4, 1, 2, 2, 2, 0, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.3676281413, 0.0010277833]", "[0, 4, 0, 1, 3, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 0.4331609309, 0.0, 0.0]", "[1, 2, 1, 2, 3, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0909090909]", "[1, 4, 1, 2, 3, 2, 1, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.2856479771]", "[1, 4, 1, 2, 2, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.3667727604]", "[1, 4, 1, 2, 3, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createLossMetric(AggregateFunction.RANK)).addPrivacyModel(new KAnonymity(5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "[0.5090179696, 0.5090179696, 0.5090179696, 0.5090179696, 0.5090179696, 0.5090179696, 0.5090179696, 0.5090179696]", "[1, 1, 1, 0, 1, 0, 1, 1]", "[1.0, 1.0, 1.0, 0.3444921234, 0.258026656, 0.1193682062, 0.0822889728, 0.0822889728]", "[1, 3, 1, 0, 1, 0, 1, 0]", "[1.0, 1.0, 0.3280807449, 0.2398489235, 0.2391132329, 0.0593130429, 0.0593130429, 0.0593130429]", "[1, 0, 1, 0, 1, 2, 2, 0]", "[1.0, 1.0, 1.0, 1.0, 0.2449218663, 0.0648166567, 0.0648166567, 0.0648166567]", "[0, 2, 1, 1, 1, 1, 1, 1]", "[1.0, 1.0, 0.445135159, 0.3004679492, 0.2887739539, 0.2073160488, 0.1096864808, 0.0206551289]", "[0, 0, 0, 2, 2, 2, 1, 1]", "[1.0, 1.0, 1.0, 0.4042592224, 0.3257599439, 0.0560639214, 0.0560639214, 0.0560639214]", "[1, 2, 1, 0, 3, 0, 1, 1]", "[1.0, 1.0, 1.0, 1.0, 0.3107694639, 0.1227974995, 0.0350772495, 0.0350772495]", "[1, 4, 1, 2, 3, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createLossMetric(AggregateFunction.RANK)).addPrivacyModel(new KAnonymity(5)), "RAMNTALL", "./data/cup.csv", "[0, 0, 0, 0, 0, 0, 0]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]", "[1, 3, 1, 2, 0, 1, 0]", "[1.0, 1.0, 0.8155607556, 0.7900544424, 0.7717769772, 0.7717564351, 0.7717564351]", "[4, 1, 0, 1, 1, 0, 1]", "[1.0, 0.5678688335, 0.4077183524, 0.3165912649, 0.2713447744, 0.2406645544, 0.2406645544]", "[3, 2, 0, 2, 0, 1, 1]", "[1.0, 0.2561838558, 0.133081417, 0.122839341, 0.0559162223, 0.0463895588, 0.0463895588]", "[3, 3, 1, 0, 1, 0, 4]", "[1.0, 1.0, 1.0, 0.6716013399, 0.5976665682, 0.5936066581, 0.5936066581]", "[1, 4, 1, 1, 0, 2, 4]", "[1.0, 1.0, 1.0, 0.4964691603, 0.2630597271, 0.1179842143, 0.1179048249]", "[5, 1, 1, 2, 1, 3, 2]", "[1.0, 1.0, 1.0, 1.0, 0.4423541032, 0.3334909601, 0.0406309274]", "[5, 4, 1, 2, 1, 4, 4]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createLossMetric(AggregateFunction.RANK)).addPrivacyModel(new KAnonymity(5)), "istatenum", "./data/fars.csv", "[0, 0, 0, 0, 0, 0, 0]", "[0.4271773482, 0.4271773482, 0.4271773482, 0.4271773482, 0.4271773482, 0.4271773482, 0.4271773482]", "[1, 2, 0, 0, 0, 2, 1]", "[1.0, 1.0, 0.2640778131, 0.2055385482, 0.1720875397, 0.1720875397, 0.1720875397]", "[0, 0, 2, 1, 1, 0, 2]", "[1.0, 1.0, 0.481537989, 0.2883475583, 0.0653774136, 0.0653774136, 0.0653774136]", "[3, 2, 0, 0, 1, 1, 1]", "[1.0, 1.0, 0.2977005458, 0.2442050311, 0.1686255342, 0.064703726, 0.064703726]", "[0, 2, 1, 2, 0, 1, 2]", "[1.0, 1.0, 0.5152545647, 0.2875501, 0.248361316, 0.0525872573, 0.0525872573]", "[5, 2, 1, 1, 0, 1, 2]", "[1.0, 1.0, 1.0, 0.2421488431, 0.2372804323, 0.2051942529, 7.925735E-4]", "[4, 2, 2, 3, 1, 2, 2]", "[1.0, 1.0, 1.0, 1.0, 1.0, 0.4431713307, 0.3835298605]", "[5, 2, 3, 3, 1, 2, 2]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createLossMetric(AggregateFunction.RANK)).addPrivacyModel(new KAnonymity(5)), "Highest level of school completed", "./data/atus.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "[0.1049377564, 0.1049377564, 0.1049377564, 0.1049377564, 0.1049377564, 0.1049377564, 0.1049377564, 0.1049377564]", "[2, 0, 0, 1, 0, 0, 0, 0]", "[1.0, 0.4663832105, 0.0605893708, 0.0605893708, 0.0605893708, 0.0605893708, 0.0605893708, 0.0605893708]", "[0, 1, 0, 1, 1, 0, 0, 0]", "[0.4621624729, 0.1522278658, 0.0725907876, 0.0536390154, 0.0536390154, 0.0536390154, 0.0536390154, 0.0536390154]", "[0, 0, 1, 1, 1, 2, 0, 0]", "[1.0, 1.0, 0.4662037535, 0.1571136368, 0.0593654555, 0.0593654555, 0.0593654555, 0.0593654555]", "[0, 0, 1, 0, 0, 2, 0, 2]", "[1.0, 1.0, 1.0, 0.0559588912, 0.0559588912, 0.0559588912, 0.0559588912, 0.0559588912]", "[0, 1, 1, 1, 1, 1, 1, 1]", "[1.0, 0.4372318576, 0.3869979397, 0.1178219376, 0.0916104218, 0.0612183891, 0.0337957137, 0.0135798966]", "[2, 3, 0, 2, 1, 2, 2, 2]", "[1.0, 1.0, 1.0, 1.0, 1.0, 0.1063322781, 0.0984749458, 0.0]", "[2, 5, 1, 2, 2, 2, 2, 2]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createLossMetric(AggregateFunction.RANK)).addPrivacyModel(new KAnonymity(5)), "EDUC", "./data/ihis.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "[0.4228188594, 0.4228188594, 0.4228188594, 0.4228188594, 0.4228188594, 0.4228188594, 0.4228188594, 0.4228188594]", "[0, 0, 0, 3, 0, 0, 0, 0]", "[1.0, 0.2376891908, 0.2376891908, 0.2376891908, 0.2376891908, 0.2376891908, 0.2376891908, 0.2376891908]", "[1, 1, 0, 0, 1, 0, 0, 0]", "[0.3735594239, 0.0983052313, 0.0942007886, 0.0603391358, 0.0603391358, 0.0603391358, 0.0603391358, 0.0603391358]", "[4, 0, 0, 1, 0, 0, 0, 0]", "[0.35111862, 0.13719054, 0.0996770852, 0.0996770852, 0.0996770852, 0.0996770852, 0.0996770852, 0.0996770852]", "[0, 1, 2, 1, 0, 0, 1, 0]", "[1.0, 1.0, 0.3812225737, 0.1105074497, 0.0718338606, 0.0718338606, 0.0718338606, 0.0718338606]", "[0, 0, 2, 1, 0, 2, 0, 1]", "[1.0, 1.0, 1.0, 0.0582084, 0.0172609392, 0.0172609392, 0.0172609392, 0.0172609392]", "[3, 0, 1, 0, 2, 2, 0, 1]", "[1.0, 1.0, 0.3341952212, 0.1182913716, 0.0920843926, 0.0012928318, 0.0012928318, 0.0012928318]", "[5, 2, 2, 3, 4, 2, 1, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createLossMetric(AggregateFunction.RANK)).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", "[0, 0, 0, 0, 0, 0, 0, 0]", "[0.9260610079, 0.9260610079, 0.9260610079, 0.9260610079, 0.9260610079, 0.9260610079, 0.9260610079, 0.9260610079]", "[0, 4, 0, 2, 1, 0, 0, 1]", "[1.0, 1.0, 1.0, 0.2968611847, 0.1266578249, 0.1266578249, 0.1266578249, 0.1266578249]", "[0, 3, 1, 1, 2, 2, 0, 0]", "[1.0, 1.0, 0.4899425287, 0.4378426171, 0.2811403156, 0.1104111405, 0.1104111405, 0.1104111405]", "[1, 2, 1, 1, 1, 1, 2, 0]", "[1.0, 1.0, 1.0, 0.4808797524, 0.3309598806, 0.2568744473, 0.1611405835, 0.0772546419]", "[1, 3, 0, 2, 2, 0, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 0.422877984, 0.2610454679, 0.0855437665, 0.0855437665]", "[0, 3, 0, 0, 3, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 0.2286257803, 0.0454244031, 0.0454244031, 0.0454244031]", "[1, 3, 1, 0, 2, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 0.3797966401, 0.2077271387, 0.0195623342]", "[1, 4, 1, 2, 3, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createLossMetric(AggregateFunction.RANK)).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", "[0, 0, 0, 0, 0, 0, 0, 0]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]", "[0, 2, 1, 1, 0, 1, 1, 0]", "[1.0, 0.9586096374, 0.9322660098, 0.93125, 0.9137931034, 0.9051724137, 0.9051724137, 0.9051724137]", "[0, 3, 1, 0, 3, 0, 0, 1]", "[1.0, 1.0, 1.0, 0.6447230929, 0.5603448275, 0.5603448275, 0.5603448275, 0.5603448275]", "[1, 4, 0, 0, 2, 2, 0, 1]", "[1.0, 1.0, 1.0, 1.0, 0.7070954907, 0.5417771883, 0.5417771883, 0.5417771883]", "[1, 3, 0, 2, 3, 1, 2, 0]", "[1.0, 1.0, 1.0, 1.0, 0.5622596153, 0.5120970983, 0.3962201591, 0.3962201591]", "[1, 4, 1, 2, 2, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.3804597701]", "[0, 4, 1, 2, 3, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0]", "[1, 4, 1, 2, 3, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]") },
                                              /* 130 */{ new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createLossMetric(AggregateFunction.RANK)).addPrivacyModel(new KAnonymity(5)).addPrivacyModel(new HierarchicalDistanceTCloseness("occupation", 0.2, Hierarchy.create("./data/adult_hierarchy_occupation.csv", StandardCharsets.UTF_8, ';'))), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "[0.9801405742, 0.9801405742, 0.9801405742, 0.9801405742, 0.9801405742, 0.9801405742, 0.9801405742, 0.9801405742]", "[1, 2, 1, 1, 0, 0, 2, 0]", "[1.0, 1.0, 1.0, 0.7703733174, 0.6082065934, 0.5690272528, 0.5690272528, 0.5690272528]", "[0, 1, 1, 2, 0, 0, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 0.8050075049, 0.7967972946, 0.7967972946, 0.7967972946]", "[0, 2, 0, 2, 1, 0, 2, 1]", "[1.0, 1.0, 1.0, 0.7246402758, 0.7177363449, 0.6895099794, 0.6895099794, 0.6895099794]", "[1, 3, 0, 2, 3, 0, 1, 0]", "[1.0, 1.0, 1.0, 0.6148417592, 0.5642654246, 0.4607784629, 0.4607784629, 0.4607784629]", "[1, 4, 0, 2, 3, 1, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.2763676148, 0.0050062993]", "[1, 4, 1, 1, 2, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.4423391463, 0.3806798841]", "[1, 4, 1, 2, 3, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createLossMetric(AggregateFunction.RANK)).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", "[0, 0, 0, 0, 0, 0, 0, 0]", "[0.9568965517, 0.9568965517, 0.9568965517, 0.9568965517, 0.9568965517, 0.9568965517, 0.9568965517, 0.9568965517]", "[0, 0, 0, 1, 1, 1, 1, 0]", "[0.9084328028, 0.8716369837, 0.8697115384, 0.8622458001, 0.8202917771, 0.8202917771, 0.8202917771, 0.8202917771]", "[0, 0, 0, 1, 0, 1, 2, 0]", "[1.0, 0.9552387267, 0.9300480769, 0.9035145888, 0.9035145888, 0.9035145888, 0.9035145888, 0.9035145888]", "[1, 4, 1, 0, 2, 2, 1, 0]", "[1.0, 1.0, 1.0, 1.0, 0.4005083996, 0.3240810913, 0.0537135278, 0.0537135278]", "[1, 2, 0, 2, 2, 2, 1, 1]", "[1.0, 1.0, 1.0, 1.0, 0.416489832, 0.3399488442, 0.1599348926, 0.0759283819]", "[1, 4, 1, 2, 3, 1, 0, 0]", "[1.0, 1.0, 1.0, 1.0, 1.0, 0.3063992042, 0.0447612732, 0.0447612732]", "[1, 4, 1, 1, 3, 2, 0, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.4349580017, 0.0086206896]", "[1, 4, 1, 2, 3, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createLossMetric(AggregateFunction.RANK)).addPrivacyModel(new RecursiveCLDiversity("occupation", 4.0, 5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "[0.665274186, 0.665274186, 0.665274186, 0.665274186, 0.665274186, 0.665274186, 0.665274186, 0.665274186]", "[1, 0, 1, 0, 0, 0, 0, 0]", "[1.0, 1.0, 0.5243684105, 0.5243684105, 0.5243684105, 0.5243684105, 0.5243684105, 0.5243684105]", "[1, 1, 0, 0, 0, 2, 2, 0]", "[1.0, 1.0, 1.0, 0.2377190109, 0.2056229692, 0.2056229692, 0.2056229692, 0.2056229692]", "[1, 2, 1, 1, 1, 0, 2, 0]", "[1.0, 1.0, 1.0, 0.5086256437, 0.2996684569, 0.2049900235, 0.1254890259, 0.1254890259]", "[0, 3, 0, 0, 1, 1, 2, 1]", "[1.0, 1.0, 0.3631116968, 0.2977477178, 0.2909936176, 0.1226046018, 0.1226046018, 0.1226046018]", "[1, 1, 0, 1, 3, 2, 1, 0]", "[1.0, 1.0, 1.0, 0.4476604115, 0.3038544242, 0.0647741254, 0.0253961938, 0.0253961938]", "[1, 4, 0, 1, 2, 0, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 0.4496220409, 0.3849634197, 0.0276506862, 0.0276506862]", "[1, 4, 1, 2, 3, 2, 2, 1]", "[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createPrecisionMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.7566312997347479", "[1, 3, 0, 1, 3, 1, 0, 0]", "0.4993990384615384", "[1, 3, 0, 1, 3, 1, 1, 1]", "0.6641143070291777", "[0, 4, 1, 0, 3, 2, 2, 1]", "0.7501657824933687", "[1, 4, 1, 2, 3, 2, 0, 1]", "0.875", "[1, 4, 1, 1, 3, 2, 1, 1]", "0.875", "[1, 4, 1, 2, 1, 2, 2, 1]", "0.9166666666666666", "[1, 4, 1, 0, 3, 2, 2, 1]", "0.875", "[1, 3, 1, 2, 3, 2, 2, 1]", "0.96875", "[1, 4, 1, 2, 3, 2, 2, 1]", "1.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createPrecisionMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.9260610079575596", "[1, 2, 1, 1, 2, 1, 0, 1]", "0.6841152740937223", "[0, 0, 1, 2, 3, 2, 2, 1]", "0.7560510610079576", "[0, 4, 1, 1, 1, 2, 2, 1]", "0.7295258620689655", "[0, 4, 0, 2, 3, 1, 2, 1]", "0.6902975795755968", "[0, 2, 1, 2, 3, 2, 2, 1]", "0.8125", "[1, 4, 1, 1, 3, 2, 2, 0]", "0.8125", "[0, 4, 1, 2, 3, 2, 2, 0]", "0.75", "[0, 4, 1, 2, 3, 2, 2, 1]", "0.875", "[1, 4, 1, 2, 3, 2, 2, 1]", "1.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createPrecisionMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "1.0", "[0, 3, 1, 1, 2, 0, 1, 0]", "0.8833651083112289", "[1, 3, 0, 2, 1, 0, 2, 1]", "0.7682671584880636", "[1, 4, 1, 2, 3, 2, 0, 1]", "0.8969247347480106", "[1, 4, 1, 1, 3, 2, 2, 1]", "0.9375", "[0, 4, 1, 2, 3, 2, 2, 1]", "0.875", "[1, 4, 1, 2, 3, 2, 2, 1]", "1.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createPrecisionMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.9801405742324779", "[0, 3, 1, 1, 0, 0, 2, 1]", "0.8704651133877064", "[0, 1, 1, 2, 2, 1, 1, 1]", "0.917836046460226", "[1, 4, 1, 0, 3, 2, 2, 1]", "0.875087030037796", "[1, 4, 1, 2, 3, 1, 2, 1]", "0.9376471222067502", "[0, 4, 1, 2, 3, 2, 2, 1]", "0.875", "[1, 4, 1, 2, 3, 2, 2, 1]", "1.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createPrecisionMetric(false)).addPrivacyModel(new KAnonymity(5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.5090179696306611", "[0, 0, 0, 2, 1, 2, 0, 0]", "0.45063186570298164", "[1, 0, 0, 1, 2, 1, 2, 1]", "0.6108652167186084", "[0, 0, 1, 2, 3, 2, 2, 1]", "0.75018234865062", "[0, 4, 1, 1, 1, 2, 2, 1]", "0.7291666666666667", "[1, 4, 1, 2, 2, 2, 1, 0]", "0.7708713226355458", "[1, 4, 1, 0, 3, 2, 2, 0]", "0.75", "[1, 1, 1, 2, 3, 2, 2, 1]", "0.90625", "[1, 4, 1, 2, 3, 2, 0, 1]", "0.875", "[1, 4, 1, 2, 3, 2, 2, 1]", "1.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createPrecisionMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "1.0", "[0, 2, 1, 2, 1, 0, 1, 0]", "0.9096761715296199", "[0, 4, 1, 1, 0, 1, 1, 1]", "0.9122388925729443", "[0, 3, 1, 2, 0, 2, 2, 1]", "0.8949042606100795", "[1, 4, 1, 0, 3, 2, 0, 1]", "0.8099303713527851", "[0, 4, 1, 2, 3, 2, 2, 1]", "0.875", "[1, 4, 1, 2, 3, 2, 2, 1]", "1.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createPrecisionMetric(false)).addPrivacyModel(new HierarchicalDistanceTCloseness("occupation", 0.2, Hierarchy.create("./data/adult_hierarchy_occupation.csv", StandardCharsets.UTF_8, ';'))), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.9801405742324779", "[0, 1, 0, 0, 3, 2, 2, 0]", "0.7387161411710098", "[0, 4, 0, 0, 3, 0, 1, 1]", "0.6548761686890789", "[0, 4, 1, 1, 3, 2, 2, 1]", "0.8125", "[1, 4, 1, 2, 2, 2, 2, 1]", "0.9590019450522733", "[1, 4, 0, 2, 3, 2, 2, 1]", "0.875", "[1, 3, 1, 2, 3, 2, 2, 1]", "0.9708200716132882", "[1, 4, 1, 2, 3, 2, 2, 1]", "1.0") },
                                              /* 140 */{ new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createPrecisionMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.9568965517241379", "[1, 4, 1, 0, 2, 1, 1, 0]", "0.6218777630415561", "[1, 4, 1, 1, 1, 0, 2, 0]", "0.6596830791335102", "[1, 4, 1, 0, 3, 2, 1, 0]", "0.6975505636604775", "[0, 4, 0, 2, 3, 1, 2, 0]", "0.5790368037135278", "[0, 4, 1, 2, 3, 2, 2, 0]", "0.75", "[1, 4, 0, 1, 3, 2, 2, 1]", "0.8125", "[1, 4, 1, 2, 3, 2, 2, 0]", "0.875", "[1, 4, 1, 1, 3, 2, 2, 1]", "0.9375", "[1, 4, 1, 2, 3, 2, 2, 1]", "1.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createPrecisionMetric(false)).addPrivacyModel(new RecursiveCLDiversity("occupation", 4.0, 5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.6652741860619322", "[0, 0, 1, 1, 2, 1, 0, 1]", "0.6122742744733991", "[0, 3, 0, 1, 0, 2, 0, 1]", "0.5515279988064452", "[1, 2, 0, 2, 2, 2, 2, 0]", "0.6502483809650111", "[1, 1, 1, 1, 3, 2, 2, 1]", "0.84375", "[0, 4, 1, 2, 2, 2, 2, 0]", "0.7168526070331322", "[0, 4, 1, 1, 3, 2, 2, 0]", "0.6875", "[1, 4, 1, 2, 3, 2, 2, 0]", "0.875", "[1, 3, 1, 2, 3, 2, 2, 1]", "0.96875", "[1, 4, 1, 2, 3, 2, 2, 1]", "1.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createPrecisionMetric(false)).addPrivacyModel(new KAnonymity(5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.5090179696306611", "[0, 1, 0, 0, 0, 0, 1, 0]", "0.30136844373715277", "[1, 0, 0, 1, 2, 0, 0, 0]", "0.4293488771743695", "[0, 1, 0, 0, 3, 0, 0, 0]", "0.27206211458126117", "[0, 3, 0, 0, 0, 2, 1, 0]", "0.34258752735229764", "[0, 4, 0, 2, 1, 0, 0, 0]", "0.3254370841898194", "[0, 4, 0, 1, 1, 1, 0, 0]", "0.31601988152863425", "[1, 4, 0, 2, 1, 0, 1, 0]", "0.4917894757200008", "[0, 4, 1, 1, 3, 1, 0, 1]", "0.626467077779988", "[1, 4, 1, 2, 3, 2, 2, 1]", "1.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createPrecisionMetric(false)).addPrivacyModel(new KAnonymity(5)), "RAMNTALL", "./data/cup.csv", "[0, 0, 0, 0, 0, 0, 0]", "1.0", "[0, 4, 0, 0, 1, 1, 0]", "0.999475890985325", "[0, 1, 1, 0, 0, 2, 2]", "0.9995400675993669", "[5, 0, 0, 0, 1, 1, 1]", "0.3854042113369677", "[1, 2, 0, 1, 0, 2, 2]", "0.8729438150632645", "[0, 3, 0, 0, 0, 2, 3]", "0.996824946463193", "[5, 4, 0, 0, 0, 1, 2]", "0.40767180755122306", "[4, 1, 0, 2, 1, 4, 1]", "0.6171797418073487", "[3, 4, 0, 0, 0, 3, 3]", "0.45228907849137673", "[5, 4, 1, 2, 1, 4, 4]", "1.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createPrecisionMetric(false)).addPrivacyModel(new KAnonymity(5)), "istatenum", "./data/fars.csv", "[0, 0, 0, 0, 0, 0, 0]", "0.4271773482469263", "[1, 0, 1, 0, 0, 0, 0]", "0.25870639724826", "[0, 0, 0, 0, 0, 2, 0]", "0.5027761305142245", "[3, 0, 1, 0, 0, 0, 0]", "0.2089778772897946", "[2, 0, 0, 2, 0, 0, 0]", "0.19319283079450317", "[4, 0, 1, 0, 0, 0, 0]", "0.21082693259397534", "[4, 0, 0, 1, 0, 0, 0]", "0.19111525010650204", "[1, 2, 2, 1, 0, 0, 2]", "0.46553819284730646", "[5, 1, 1, 3, 1, 2, 1]", "0.7619141973045893", "[5, 2, 3, 3, 1, 2, 2]", "1.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createPrecisionMetric(false)).addPrivacyModel(new KAnonymity(5)), "Highest level of school completed", "./data/atus.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.10493775648906913", "[1, 0, 0, 0, 0, 0, 0, 0]", "0.14170853013335116", "[0, 0, 0, 0, 0, 0, 0, 1]", "0.15372689164455272", "[0, 0, 0, 1, 0, 0, 0, 1]", "0.20063170719495305", "[0, 0, 0, 0, 0, 0, 0, 2]", "0.19309790580673636", "[1, 2, 0, 0, 0, 0, 0, 0]", "0.1551047003910966", "[0, 3, 0, 0, 1, 0, 0, 0]", "0.17668935082419565", "[1, 4, 0, 0, 0, 0, 1, 2]", "0.3551529615968757", "[0, 2, 0, 1, 2, 1, 2, 1]", "0.4879837478882825", "[2, 5, 1, 2, 2, 2, 2, 2]", "1.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createPrecisionMetric(false)).addPrivacyModel(new KAnonymity(5)), "EDUC", "./data/ihis.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.42281885942569103", "[1, 0, 1, 0, 0, 0, 0, 0]", "0.2251765599444996", "[0, 0, 0, 2, 0, 0, 0, 0]", "0.3262034870990518", "[0, 0, 1, 1, 1, 0, 0, 0]", "0.2200354394148099", "[1, 0, 0, 0, 1, 0, 0, 1]", "0.20622333481915434", "[1, 0, 0, 0, 2, 1, 0, 0]", "0.18861415629943426", "[5, 1, 0, 0, 0, 0, 0, 0]", "0.2650919582171488", "[3, 0, 1, 1, 3, 2, 1, 0]", "0.5238516429354237", "[4, 2, 2, 0, 1, 2, 0, 1]", "0.631319207979194", "[5, 2, 2, 3, 4, 2, 1, 1]", "1.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createPrecisionMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.9260610079575596", "[1, 3, 0, 0, 0, 0, 0, 0]", "0.5415077917771882", "[1, 4, 0, 0, 1, 0, 0, 0]", "0.43046805923961107", "[0, 2, 0, 1, 1, 2, 0, 1]", "0.5901580459770115", "[0, 3, 0, 1, 3, 2, 0, 0]", "0.47771261604774534", "[0, 4, 0, 0, 3, 2, 2, 0]", "0.5182360742705571", "[0, 4, 0, 2, 3, 1, 2, 0]", "0.5738146551724138", "[1, 4, 1, 2, 3, 2, 2, 1]", "1.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createPrecisionMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "1.0", "[1, 1, 0, 0, 0, 0, 0, 0]", "0.9353759118037137", "[1, 0, 0, 0, 2, 1, 2, 0]", "0.9645432692307693", "[1, 4, 0, 1, 2, 0, 2, 1]", "0.7811118479221927", "[0, 4, 0, 2, 2, 2, 2, 0]", "0.7517407161803713", "[1, 4, 0, 1, 3, 2, 2, 1]", "0.8176599801061009", "[1, 4, 0, 2, 3, 2, 2, 1]", "0.8769479442970822", "[1, 4, 1, 2, 3, 2, 2, 1]", "1.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createPrecisionMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.9801405742324779", "[1, 1, 0, 2, 1, 0, 1, 0]", "0.7172818861481335", "[1, 2, 1, 0, 1, 0, 0, 1]", "0.8463505404150917", "[0, 2, 1, 1, 2, 1, 0, 0]", "0.8722039873571601", "[1, 2, 1, 0, 1, 1, 0, 1]", "0.8269207391198637", "[0, 4, 0, 2, 3, 2, 2, 1]", "0.7623168224918773", "[1, 4, 0, 2, 3, 2, 2, 1]", "0.875", "[1, 4, 1, 2, 3, 2, 2, 1]", "1.0") },
                                              /* 150 */{ new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createPrecisionMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.9568965517241379", "[0, 0, 1, 0, 3, 2, 0, 0]", "0.7882128647214854", "[1, 3, 1, 1, 1, 1, 1, 0]", "0.6533488063660478", "[0, 0, 1, 1, 3, 2, 2, 0]", "0.6860908488063662", "[0, 3, 0, 1, 3, 0, 1, 1]", "0.5552366545092838", "[0, 4, 0, 2, 3, 2, 1, 0]", "0.5826632957559681", "[0, 4, 0, 1, 3, 2, 2, 0]", "0.583098474801061", "[1, 4, 1, 2, 3, 2, 2, 1]", "1.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createPrecisionMetric(false)).addPrivacyModel(new RecursiveCLDiversity("occupation", 4.0, 5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.6652741860619322", "[0, 1, 1, 1, 0, 0, 0, 1]", "0.566024716530734", "[0, 0, 1, 0, 3, 0, 0, 1]", "0.5379741064916119", "[0, 3, 0, 1, 1, 0, 1, 0]", "0.40084481300974734", "[0, 4, 0, 0, 1, 1, 2, 0]", "0.4203302168291227", "[0, 4, 0, 0, 3, 0, 2, 0]", "0.4049631987268748", "[1, 4, 1, 2, 3, 2, 2, 1]", "1.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createPrecisionMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 4, 0, 0, 0, 2, 2, 1]", "0.5", "[1, 1, 0, 1, 3, 2, 2, 1]", "0.71875", "[1, 4, 1, 2, 2, 2, 0, 0]", "0.7083333333333334", "[0, 4, 1, 2, 0, 2, 2, 1]", "0.75", "[1, 4, 1, 2, 3, 2, 1, 0]", "0.8125", "[1, 4, 1, 2, 3, 2, 0, 1]", "0.875", "[0, 4, 1, 2, 2, 2, 2, 1]", "0.8333333333333333", "[1, 4, 1, 2, 3, 2, 2, 1]", "1.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createPrecisionMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[1, 0, 1, 1, 3, 0, 1, 0]", "0.5", "[1, 4, 1, 1, 3, 1, 0, 0]", "0.625", "[0, 4, 1, 1, 1, 2, 2, 1]", "0.7291666666666667", "[0, 4, 1, 2, 2, 2, 2, 0]", "0.7083333333333333", "[0, 4, 1, 1, 3, 2, 2, 1]", "0.8125", "[0, 3, 1, 2, 3, 2, 2, 1]", "0.84375", "[1, 4, 1, 1, 3, 2, 2, 1]", "0.9375", "[1, 4, 1, 2, 3, 2, 2, 1]", "1.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createPrecisionMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 0, 1, 0, 0, 0, 1, 0]", "0.1875", "[1, 0, 0, 2, 0, 2, 1, 1]", "0.5625", "[1, 4, 1, 2, 3, 2, 2, 0]", "0.875", "[1, 4, 1, 2, 3, 1, 2, 1]", "0.9375", "[1, 4, 1, 1, 3, 2, 2, 1]", "0.9375", "[1, 4, 1, 2, 3, 2, 2, 1]", "1.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createPrecisionMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 1, 0, 1, 0, 0, 1, 1]", "0.28125", "[0, 1, 1, 0, 0, 2, 1, 0]", "0.34375", "[0, 4, 1, 2, 3, 0, 2, 0]", "0.625", "[1, 4, 1, 1, 3, 2, 2, 1]", "0.9375", "[1, 4, 0, 2, 3, 2, 2, 1]", "0.875", "[1, 3, 1, 2, 3, 2, 2, 1]", "0.96875", "[1, 4, 1, 2, 3, 2, 2, 1]", "1.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createPrecisionMetric(true)).addPrivacyModel(new KAnonymity(5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 4, 1, 1, 1, 1, 0, 1]", "0.5416666666666667", "[1, 3, 1, 0, 1, 2, 2, 0]", "0.6354166666666667", "[0, 4, 1, 0, 2, 2, 2, 1]", "0.7083333333333333", "[0, 4, 1, 2, 3, 2, 1, 0]", "0.6875", "[0, 4, 1, 1, 3, 2, 2, 0]", "0.6875", "[1, 4, 1, 2, 2, 2, 0, 1]", "0.8333333333333334", "[1, 4, 0, 2, 2, 2, 2, 1]", "0.8333333333333333", "[1, 4, 1, 2, 3, 2, 2, 1]", "1.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createPrecisionMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 2, 0, 1, 0, 1, 1, 1]", "0.375", "[0, 1, 1, 0, 1, 2, 1, 1]", "0.5104166666666666", "[0, 4, 0, 0, 3, 0, 1, 0]", "0.3125", "[0, 4, 1, 2, 2, 2, 2, 1]", "0.8333333333333333", "[1, 4, 1, 1, 3, 2, 2, 1]", "0.9375", "[0, 4, 1, 2, 3, 2, 2, 1]", "0.875", "[1, 4, 1, 2, 3, 2, 2, 1]", "1.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createPrecisionMetric(true)).addPrivacyModel(new HierarchicalDistanceTCloseness("occupation", 0.2, Hierarchy.create("./data/adult_hierarchy_occupation.csv", StandardCharsets.UTF_8, ';'))), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[1, 0, 0, 0, 1, 2, 1, 0]", "0.35416666666666663", "[0, 1, 0, 2, 1, 0, 1, 1]", "0.38541666666666663", "[0, 4, 1, 1, 2, 2, 2, 1]", "0.7708333333333333", "[1, 4, 1, 2, 3, 2, 0, 1]", "0.875", "[0, 4, 1, 1, 3, 2, 2, 1]", "0.8125", "[1, 4, 0, 2, 3, 2, 2, 1]", "0.875", "[1, 4, 1, 2, 3, 2, 2, 1]", "1.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createPrecisionMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[1, 0, 0, 0, 0, 2, 0, 0]", "0.25", "[0, 4, 0, 0, 3, 0, 1, 0]", "0.3125", "[0, 3, 0, 2, 3, 1, 0, 1]", "0.53125", "[0, 4, 1, 2, 3, 0, 2, 0]", "0.625", "[1, 4, 1, 1, 2, 2, 2, 1]", "0.8958333333333334", "[1, 4, 1, 2, 3, 2, 2, 0]", "0.875", "[1, 4, 1, 1, 3, 2, 2, 1]", "0.9375", "[0, 4, 1, 2, 3, 2, 2, 1]", "0.875", "[1, 4, 1, 2, 3, 2, 2, 1]", "1.0") },
                                              /* 160 */{ new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.0d, Metric.createPrecisionMetric(true)).addPrivacyModel(new RecursiveCLDiversity("occupation", 4.0, 5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[1, 2, 1, 0, 0, 0, 1, 0]", "0.375", "[0, 2, 0, 1, 0, 2, 1, 0]", "0.3125", "[0, 4, 0, 2, 3, 1, 2, 0]", "0.5625", "[0, 4, 1, 2, 2, 1, 2, 1]", "0.7708333333333333", "[1, 2, 1, 1, 3, 2, 2, 1]", "0.875", "[1, 4, 1, 0, 3, 2, 2, 1]", "0.875", "[1, 4, 1, 2, 3, 1, 2, 1]", "0.9375", "[1, 3, 1, 2, 3, 2, 2, 1]", "0.96875", "[1, 4, 1, 2, 3, 2, 2, 1]", "1.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createPrecisionMetric(true)).addPrivacyModel(new KAnonymity(5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 0, 1, 0, 0, 1, 2, 0]", "0.3125", "[1, 1, 1, 0, 0, 0, 2, 0]", "0.40625", "[1, 0, 0, 1, 3, 2, 1, 0]", "0.5", "[1, 3, 0, 0, 2, 0, 2, 0]", "0.4270833333333333", "[0, 2, 1, 1, 1, 2, 0, 1]", "0.5416666666666667", "[0, 2, 1, 1, 1, 0, 2, 1]", "0.5416666666666667", "[0, 2, 0, 2, 2, 1, 2, 0]", "0.4583333333333333", "[0, 4, 0, 0, 1, 1, 2, 1]", "0.47916666666666663", "[1, 4, 1, 2, 3, 2, 2, 1]", "1.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createPrecisionMetric(true)).addPrivacyModel(new KAnonymity(5)), "RAMNTALL", "./data/cup.csv", "[0, 0, 0, 0, 0, 0, 0]", "0.0", "[2, 2, 0, 0, 1, 1, 1]", "0.34285714285714286", "[4, 0, 0, 2, 1, 1, 0]", "0.43571428571428567", "[5, 1, 0, 1, 1, 1, 0]", "0.42857142857142855", "[0, 2, 1, 1, 1, 1, 3]", "0.5714285714285714", "[5, 0, 1, 2, 0, 1, 1]", "0.5", "[4, 0, 1, 2, 0, 4, 1]", "0.5785714285714285", "[5, 2, 1, 1, 0, 1, 4]", "0.6071428571428571", "[3, 3, 1, 2, 1, 1, 4]", "0.7999999999999999", "[5, 4, 1, 2, 1, 4, 4]", "1.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createPrecisionMetric(true)).addPrivacyModel(new KAnonymity(5)), "istatenum", "./data/fars.csv", "[0, 0, 0, 0, 0, 0, 0]", "0.0", "[1, 0, 0, 1, 1, 2, 0]", "0.3619047619047619", "[1, 0, 2, 0, 1, 0, 2]", "0.4095238095238095", "[2, 1, 2, 0, 0, 1, 1]", "0.36666666666666664", "[2, 1, 2, 0, 0, 0, 2]", "0.36666666666666664", "[2, 1, 0, 1, 0, 1, 2]", "0.3904761904761905", "[2, 1, 2, 0, 1, 2, 0]", "0.5095238095238095", "[2, 2, 1, 0, 0, 2, 1]", "0.46190476190476193", "[3, 1, 3, 2, 0, 0, 1]", "0.4666666666666667", "[5, 2, 3, 3, 1, 2, 2]", "1.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createPrecisionMetric(true)).addPrivacyModel(new KAnonymity(5)), "Highest level of school completed", "./data/atus.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 0, 1, 0, 0, 0, 1, 0]", "0.1875", "[0, 3, 0, 0, 0, 0, 0, 0]", "0.075", "[0, 0, 0, 0, 2, 0, 1, 0]", "0.1875", "[0, 2, 0, 1, 1, 1, 1, 0]", "0.3", "[1, 0, 0, 1, 1, 2, 0, 1]", "0.375", "[0, 1, 0, 0, 2, 2, 0, 1]", "0.3375", "[1, 1, 0, 0, 2, 2, 0, 1]", "0.4", "[2, 2, 1, 2, 2, 1, 2, 1]", "0.8", "[2, 5, 1, 2, 2, 2, 2, 2]", "1.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createPrecisionMetric(true)).addPrivacyModel(new KAnonymity(5)), "EDUC", "./data/ihis.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[1, 0, 1, 1, 0, 0, 1, 0]", "0.25416666666666665", "[0, 0, 0, 3, 2, 0, 0, 0]", "0.1875", "[0, 0, 0, 3, 0, 1, 1, 0]", "0.3125", "[0, 1, 1, 2, 0, 0, 0, 1]", "0.3333333333333333", "[2, 0, 0, 1, 1, 0, 0, 1]", "0.24791666666666667", "[3, 0, 1, 1, 0, 1, 0, 0]", "0.24166666666666667", "[0, 1, 2, 1, 0, 1, 0, 1]", "0.41666666666666663", "[2, 1, 2, 3, 2, 2, 1, 0]", "0.675", "[5, 2, 2, 3, 4, 2, 1, 1]", "1.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createPrecisionMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[1, 1, 1, 0, 0, 1, 0, 0]", "0.34375", "[1, 0, 0, 2, 0, 0, 0, 1]", "0.375", "[0, 0, 1, 1, 2, 0, 0, 1]", "0.3958333333333333", "[1, 1, 0, 0, 2, 0, 1, 1]", "0.4270833333333333", "[0, 4, 0, 1, 3, 1, 1, 0]", "0.4375", "[0, 4, 0, 2, 3, 1, 2, 0]", "0.5625", "[1, 4, 1, 2, 3, 2, 2, 1]", "1.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createPrecisionMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[1, 0, 1, 2, 2, 0, 1, 0]", "0.5208333333333333", "[1, 1, 1, 2, 3, 0, 0, 1]", "0.65625", "[1, 1, 1, 0, 3, 2, 2, 0]", "0.65625", "[0, 1, 1, 2, 3, 2, 1, 1]", "0.71875", "[1, 4, 0, 2, 3, 1, 2, 1]", "0.8125", "[1, 4, 0, 2, 3, 2, 2, 1]", "0.875", "[1, 4, 1, 2, 3, 2, 2, 1]", "1.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createPrecisionMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[1, 1, 0, 1, 0, 0, 2, 0]", "0.34375", "[1, 1, 1, 1, 0, 0, 0, 1]", "0.46875", "[0, 4, 0, 0, 2, 1, 0, 1]", "0.3958333333333333", "[1, 4, 1, 0, 1, 1, 0, 1]", "0.6041666666666667", "[0, 4, 0, 2, 3, 2, 2, 1]", "0.75", "[1, 4, 0, 2, 3, 2, 2, 1]", "0.875", "[1, 4, 1, 2, 3, 2, 2, 1]", "1.0") },
                                              { new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createPrecisionMetric(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", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[1, 2, 0, 1, 0, 1, 1, 0]", "0.375", "[1, 0, 0, 1, 2, 0, 2, 0]", "0.3958333333333333", "[1, 3, 1, 0, 0, 0, 1, 1]", "0.53125", "[0, 2, 1, 0, 3, 1, 2, 0]", "0.5", "[0, 4, 0, 2, 3, 1, 2, 0]", "0.5625", "[1, 4, 1, 2, 3, 2, 2, 1]", "1.0") },
                                              /* 170 */{ new ARXUtilityMetricsTestCase(ARXConfiguration.create(0.05d, Metric.createPrecisionMetric(true)).addPrivacyModel(new RecursiveCLDiversity("occupation", 4.0, 5)), "occupation", "./data/adult.csv", "[0, 0, 0, 0, 0, 0, 0, 0]", "0.0", "[0, 0, 0, 0, 0, 0, 2, 0]", "0.125", "[0, 1, 0, 0, 0, 0, 0, 1]", "0.15625", "[0, 2, 0, 0, 0, 2, 0, 1]", "0.3125", "[1, 4, 0, 0, 1, 0, 0, 0]", "0.2916666666666667", "[0, 4, 0, 0, 3, 0, 2, 0]", "0.375", "[1, 4, 1, 2, 3, 2, 2, 1]", "1.0") },
        });
    }
    
    /**
     * Creates a new instance.
     *
     * @param testCase
     */
    public TestUtilityMetrics2(final ARXUtilityMetricsTestCase testCase) {
        super(testCase);
    }
}
