Skip to content

Commit

Permalink
Merge pull request #400 from Crunch-io/median-bug-fix-187944176
Browse files Browse the repository at this point in the history
add median measure in enum
  • Loading branch information
ernestoarbitrio authored Jul 15, 2024
2 parents efb2cd5 + 51778f9 commit 2e24af1
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 2 deletions.
3 changes: 3 additions & 0 deletions src/cr/cube/enums.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ class MEASURE(enum.Enum):
COLUMN_STDDEV = "col_std_dev"
COLUMN_STDERR = "col_std_err"
MEAN = "mean"
MEDIAN = "median"
PAIRWISE_T_TEST = "pairwise_t_test"
POPULATION = "population"
POPULATION_MOE = "population_moe"
Expand Down Expand Up @@ -170,6 +171,7 @@ class CUBE_MEASURE(enum.Enum):
NUMERIC_CUBE_MEASURES = frozenset(
(
CUBE_MEASURE.MEAN,
CUBE_MEASURE.MEDIAN,
CUBE_MEASURE.SUM,
CUBE_MEASURE.STDDEV,
CUBE_MEASURE.UNWEIGHTED_VALID_COUNT,
Expand All @@ -180,6 +182,7 @@ class CUBE_MEASURE(enum.Enum):
NUMERIC_MEASURES = frozenset(
(
MEASURE.MEAN,
MEASURE.MEDIAN,
MEASURE.SUM,
MEASURE.STDDEV,
MEASURE.WEIGHTED_VALID_COUNT,
Expand Down
38 changes: 36 additions & 2 deletions tests/unit/test_enum.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
# encoding: utf-8

"""Unit test suite for cr.cube.cube_slice module."""
"""Unit test suite for cr.cube.enums module."""

from cr.cube.enums import _DimensionType
from cr.cube.enums import (
CUBE_MEASURE,
MEASURE,
NUMERIC_CUBE_MEASURES,
NUMERIC_MEASURES,
_DimensionType,
)


class Describe_DimensionType:
Expand All @@ -20,3 +26,31 @@ def it_knows_its_name(self):
dimension_type = _DimensionType("WORM_HOLE")
name = dimension_type.name
assert name == "WORM_HOLE"


class TestCubeMeasures:
def test_numeric_cube_measures_intersection(self):
intersection = NUMERIC_CUBE_MEASURES & {m for m in CUBE_MEASURE}
expected_intersection = {
MEASURE.MEAN,
MEASURE.MEDIAN,
MEASURE.SUM,
MEASURE.STDDEV,
MEASURE.UNWEIGHTED_VALID_COUNT,
MEASURE.WEIGHTED_VALID_COUNT,
}
assert sorted(list([m.value for m in intersection])) == sorted(
list([m.value for m in expected_intersection])
)

def test_numeric_cube_measures_difference(self):
difference = {m.value for m in NUMERIC_MEASURES} - {
m.value for m in NUMERIC_CUBE_MEASURES
}
expected_difference = {
"smoothed_mean",
"total_share_sum",
"row_share_sum",
"col_share_sum",
}
assert list(sorted(difference)) == list(sorted(expected_difference))

0 comments on commit 2e24af1

Please sign in to comment.