def test_get_score_for_criteria(self):
     criteria = {
                 "analysis_1":{
                               "action": ">",
                               "weight": 1.0
                               },
                 "analysis_2":{
                               "action": "<",
                               "weight": 0.5
                               }
     }
     
     clustering_info = {
                        'Clustering 1': {
                                          'evaluation': {
                                                         'Normalized_analysis_1': 1,
                                                         'Normalized_analysis_2': 0.3
                                           }   
                         },
                         'Clustering 2': {
                                          'evaluation': {
                                                         'Normalized_analysis_1': 0.7,
                                                         'Normalized_analysis_2': 1.
                                           }
                         }, 
                         'Clustering 3': {
                                          'evaluation': {
                                                         'Normalized_analysis_1': 0.6,
                                                         'Normalized_analysis_2': 0.5
                                           }
                         }, 
                         'Clustering 4': {
                                          'evaluation': {
                                                         'Normalized_analysis_1': 0.9,
                                                         'Normalized_analysis_2': 0.0
                                           }
                         } 
     }
     self.assertEqual(BestClusteringSelector.get_score_for_criteria("Clustering 1", 
                                                                   clustering_info,
                                                                   criteria), 
                      0.9)
     
     self.assertAlmostEqual(BestClusteringSelector.get_score_for_criteria("Clustering 4", 
                                                                   clustering_info,
                                                                   criteria), 
                      0.933333333333,12)
    def test_get_score_for_criteria(self):
        criteria = {
            "analysis_1": {
                "action": ">",
                "weight": 1.0
            },
            "analysis_2": {
                "action": "<",
                "weight": 0.5
            }
        }

        clustering_info = {
            'Clustering 1': {
                'evaluation': {
                    'Normalized_analysis_1': 1,
                    'Normalized_analysis_2': 0.3
                }
            },
            'Clustering 2': {
                'evaluation': {
                    'Normalized_analysis_1': 0.7,
                    'Normalized_analysis_2': 1.
                }
            },
            'Clustering 3': {
                'evaluation': {
                    'Normalized_analysis_1': 0.6,
                    'Normalized_analysis_2': 0.5
                }
            },
            'Clustering 4': {
                'evaluation': {
                    'Normalized_analysis_1': 0.9,
                    'Normalized_analysis_2': 0.0
                }
            }
        }
        self.assertEqual(
            BestClusteringSelector.get_score_for_criteria(
                "Clustering 1", clustering_info, criteria), 0.9)

        self.assertAlmostEqual(
            BestClusteringSelector.get_score_for_criteria(
                "Clustering 4", clustering_info, criteria), 0.933333333333, 12)