{
    "test_datasets": {
        "d1": {
            "data": {
                "x": [2.0, 5.0],
                "y": [5, 5],
                "z": [0, 10],
                "n": [0, null],
                "b": [true, false]
            },
            "schemas": {
                "SparkDFDataset": {
                  "x": "FloatType",
                  "y": "IntegerType",
                  "z": "IntegerType",
                  "n": "IntegerType",
                  "b": "BooleanType"
                }
            }
        },
        "d2": {
            "data": {
                "a": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
                "b": ["a", "b", "b", "c", "c", "c", "d", "d", "d", "d"],
                "c": ["a", "b", "b", "c", "c", "c", "d", null, null, null],
                "d": ["a", "b", "c", "d", "e", "f", "g", null, null, null]
            },
            "schemas": {
                "SparkDFDataset": {
                  "a": "IntegerType",
                  "b": "StringType",
                  "c": "StringType",
                  "d": "StringType"
                }
            }
        },
        "d3": {
            "data": {
                "a": [1, 2, 3, 4, 5],
                "b": ["a", "b", "c", "d", "e"],
                "c": [1, 2, 2, 3, 3]
            },
            "schemas": {
                "SparkDFDataset": {
                    "a": "IntegerType",
                    "b": "StringType",
                    "c": "IntegerType"
                }
            }
        }
    },
    "tests": [
        {
            "func": "get_row_count",
            "dataset": "d1",
            "expected": 2
        },
        {
            "func": "get_row_count",
            "dataset": "d2",
            "expected": 10
        },
        {
            "func": "get_table_columns",
            "dataset": "d1",
            "expected": ["x", "y", "z", "n", "b"]
        },
        {
            "func": "get_table_columns",
            "dataset": "d2",
            "expected": ["a", "b", "c", "d"]
        },
        {
            "func": "get_column_nonnull_count",
            "dataset": "d2",
            "kwargs": {
                "column": "b"
            },
            "expected": 10
        },
        {
            "func": "get_column_nonnull_count",
            "dataset": "d2",
            "kwargs": {
                "column": "c"
            },
            "expected": 7
        },
        {
            "func": "get_column_mean",
            "dataset": "d1",
            "kwargs": {
                "column": "x"
            },
            "expected": 3.5
        },
        {
            "func": "get_column_mean",
            "dataset": "d1",
            "kwargs": {
                "column": "y"
            },
            "expected": 5
        },
        {
            "func": "get_column_mean",
            "dataset": "d1",
            "kwargs": {
                "column": "z"
            },
            "expected": 5
        },
        {
            "func": "get_column_sum",
            "dataset": "d1",
            "kwargs": {
                "column": "x"
            },
            "expected": 7
        },
        {
            "func": "get_column_sum",
            "dataset": "d1",
            "kwargs": {
                "column": "n"
            },
            "expected": 0
        },
        {
            "func": "get_column_sum",
            "dataset": "d2",
            "kwargs": {
                "column": "a"
            },
            "expected": 55
        },
        {
            "func": "get_column_median",
            "dataset": "d2",
            "kwargs": {
                "column": "a"
            },
            "expected": 5.5
        },
        {
            "func": "get_column_median",
            "dataset": "d3",
            "kwargs": {
                "column": "a"
            },
            "expected": 3
        },
        {
            "_note": "this test tests the value of this method *after serialization* see python test_get_column_value_counts for series test",
            "func": "get_column_value_counts",
            "dataset": "d2",
            "kwargs": {
                "column": "b"
            },
            "expected": [
                {
                    "value": "a",
                    "count": 1
                },
                {
                    "value": "b",
                    "count": 2
                },
                {
                    "value": "c",
                    "count": 3
                },
                {
                    "value": "d",
                    "count": 4
                }
            ]
        },
        {
            "_note": "this test tests the value of this method *after serialization* see python test_get_column_value_counts for series test",
            "func": "get_column_value_counts",
            "dataset": "d2",
            "kwargs": {
                "column": "c"
            },
            "expected": [
                {
                    "value": "a",
                    "count": 1
                },
                {
                    "value": "b",
                    "count": 2
                },
                {
                    "value": "c",
                    "count": 3
                },
                {
                    "value": "d",
                    "count": 1
                }
            ]
        },
        {
            "_note": "this test tests the value of this method *after serialization* see python test_get_column_value_counts for series test",
            "func": "get_column_value_counts",
            "dataset": "d1",
            "kwargs": {
                "column": "y"
            },
            "expected": [{
                "value": 5,
                "count": 2
            }]
        },
        {
            "func": "get_column_max",
            "dataset": "d1",
            "kwargs": {
                "column": "x"
            },
            "expected": 5
        },
        {
            "func": "get_column_max",
            "dataset": "d1",
            "kwargs": {
                "column": "n"
            },
            "expected": 0
        },
        {
            "func": "get_column_max",
            "dataset": "d2",
            "kwargs": {
                "column": "d"
            },
            "expected": "g"
        },
        {
            "func": "get_column_min",
            "dataset": "d1",
            "kwargs": {
                "column": "x"
            },
            "expected": 2
        },
        {
            "func": "get_column_min",
            "dataset": "d1",
            "kwargs": {
                "column": "n"
            },
            "expected": 0
        },
        {
            "func": "get_column_min",
            "dataset": "d2",
            "kwargs": {
                "column": "d"
            },
            "expected": "a"
        },
        {
            "func": "get_column_unique_count",
            "dataset": "d1",
            "kwargs": {
                "column": "n"
            },
            "expected": 1
        },
        {
            "func": "get_column_unique_count",
            "dataset": "d2",
            "kwargs": {
                "column": "b"
            },
            "expected": 4
        },
        {
            "func": "get_column_unique_count",
            "dataset": "d2",
            "kwargs": {
                "column": "c"
            },
            "expected": 4
        },
        {
            "func": "get_column_unique_count",
            "dataset": "d3",
            "kwargs": {
                "column": "c"
            },
            "expected": 3
        },
        {
            "func": "get_column_modes",
            "dataset": "d1",
            "kwargs": {
                "column": "y"
            },
            "expected": [5]
        },
        {
            "func": "get_column_modes",
            "dataset": "d2",
            "kwargs": {
                "column": "b"
            },
            "expected": ["d"]
        },
        {
            "func": "get_column_modes",
            "dataset": "d2",
            "kwargs": {
                "column": "d"
            },
            "expected": ["a", "b", "c", "d", "e", "f", "g"]
        },
        {
            "func": "get_column_modes",
            "dataset": "d3",
            "kwargs": {
                "column": "c"
            },
            "expected": [2, 3]
        },
        {
            "func": "get_column_stdev",
            "dataset": "d2",
            "tolerance": 0.00000001,
            "kwargs": {
                "column": "a"
            },
            "expected": 3.0276503540974917
        },
        {
            "func": "get_column_stdev",
            "dataset": "d3",
            "tolerance": 0.00000001,
            "kwargs": {
                "column": "c"
            },
            "expected": 0.8366600265340755
        },
        {
            "func": "get_column_hist",
            "dataset": "d2",
            "kwargs": {
                "column": "a",
                "bins": [1, 5, 9, 11]
            },
            "expected": [4, 4, 2]
        },
        {
            "func": "get_column_hist",
            "dataset": "d2",
            "kwargs": {
                "column": "a",
                "bins": [1, 7, 9]
            },
            "expected": [6, 3]
        },
        {
            "func": "get_column_count_in_range",
            "dataset": "d2",
            "kwargs": {
                "column": "a",
                "min_val": 7
            },
            "expected": 4
        },
        {
            "func": "get_column_count_in_range",
            "dataset": "d2",
            "kwargs": {
                "column": "a",
                "max_val": 2
            },
            "expected": 1
        },
        {
            "func": "get_column_count_in_range",
            "dataset": "d2",
            "kwargs": {
                "column": "a",
                "min_val": 3,
                "max_val": 7
            },
            "expected": 4
        },
        {
            "func": "get_column_count_in_range",
            "dataset": "d2",
            "kwargs": {
                "column": "a",
                "min_val": 3,
                "max_val": 7,
                "min_strictly": true
            },
            "expected": 3
        },
        {
            "func": "get_column_count_in_range",
            "dataset": "d2",
            "kwargs": {
                "column": "a",
                "min_val": 3,
                "max_val": 7,
                "max_strictly": false
            },
            "expected": 5
        },
        {
            "func": "get_column_quantiles",
            "dataset": "d1",
            "kwargs": {
                "column": "x",
                "quantiles": [0.0,1.0]
            },
            "expected": [2.0,5.0],
            "suppress_test_for": ["sqlite"]
        },
        {
            "func": "get_column_quantiles",
            "dataset": "d2",
            "kwargs": {
                "column": "a",
                "quantiles": [0.0, 0.1111111111111111, 0.2222222222222222, 0.3333333333333333, 0.4444444444444444, 0.5555555555555556, 0.6666666666666666, 0.7777777777777777, 0.8888888888888888, 1.0]
            },
            "expected": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
            "suppress_test_for": ["sqlite"]
        },
        {
            "func": "get_column_partition",
            "dataset": "d2",
            "kwargs": {
                "column": "a"
            },
            "expected": [ 1.0, 1.9, 2.8, 3.7, 4.6, 5.5, 6.4, 7.3, 8.2, 9.1, 10.0],
            "suppress_test_for": ["sqlite"],
            "tolerance": 0.0001,
            "_note": "we use the default arguments here"
        },
        {
            "func": "get_column_partition",
            "dataset": "d2",
            "kwargs": {
                "column": "a",
                "bins": "uniform",
                "n_bins": 9
            },
            "tolerance": 0.0001,
            "expected": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0],
            "suppress_test_for": ["sqlite"]
        },
        {
            "func": "get_column_partition",
            "dataset": "d2",
            "kwargs": {
                "column": "a",
                "bins": "ntile",
                "n_bins": 2
            },
            "expected": [1.0, 5.0, 10.0],
            "suppress_test_for": ["sqlite"]
        }
    ]
}