{
  "expectation_type": "expect_column_values_to_be_in_set",
  "datasets" : [{
    "data" : {
      "x" : [1,2,4],
      "y" : [1.1,2.2,5.5],
      "z" : ["hello", "jello", "mello"]
    },
    "tests" : [
      {
        "title": "Basic positive test case, number set",
        "exact_match_out": false,
        "in": {
          "column": "x",
          "value_set": [1,2,4]
        },
        "out": {
          "success": true
        }
      },
      {
        "title": "Vacuously true - empty value_set",
        "exact_match_out": false,
        "in": {
          "column": "x",
          "value_set": null
        },
        "out": {
          "success": true
        }
      },
      {
        "title": "Negative test case, exclude existing column value",
        "exact_match_out": false,
        "in": {
          "column": "x",
          "value_set": [2, 4]
        },
        "out": {
          "success": false,
          "unexpected_index_list": [0],
          "unexpected_list": [1]
        }
      },
      {
        "title": "Negative, Empty values set",
        "exact_match_out": false,
        "in": {
          "column": "x",
          "value_set": []
        },
        "out": {
          "success": false,
          "unexpected_index_list": [0, 1, 2],
          "unexpected_list": [1, 2, 4]
        }
      },
      {
        "title": "Basic Positive strings set",
        "exact_match_out": false,
        "in": {
          "column": "z",
          "value_set": ["hello", "jello", "mello"]
        },
        "out": {
          "success": true
        }
      },
      {
        "title": "Negative test, strings set, extra value in column",
        "exact_match_out": false,
        "in": {
          "column": "z",
          "value_set": ["hello", "jello"]
        },
        "out": {
          "success": false,
          "unexpected_index_list": [2],
          "unexpected_list": ["mello"]
        }
      },
      {
        "title": "Negative test,  numbers set, no matching values",
        "exact_match_out": false,
        "in": {
          "column": "x",
          "value_set": [3]
        },
        "out": {
          "success": false,
          "unexpected_index_list": [0, 1, 2],
          "unexpected_list": [1, 2, 4]
        }
      },
      {
        "title": "Positive test, float set",
        "exact_match_out": false,
        "in": {
          "column": "y",
          "value_set": [1.1, 2.2, 5.5]
        },
        "out": {
          "success": true
        }
      },
      {
        "title": "Negative test, float set",
        "exact_match_out": false,
        "in": {
          "column": "y",
          "value_set": [1.11, 2.22, 5.51]
        },
        "out": {
          "success": false,
          "unexpected_index_list": [0, 1, 2],
          "unexpected_list": [1.1, 2.2, 5.5]
        }
      },
      {
        "title": "Raise TypeError when Values set is missing",
        "exact_match_out": false,
        "in": {
          "column": "z",
          "value_set": null,
          "catch_exceptions": true
        },
        "out": {},
        "error":{
          "traceback_substring": "argument of type 'NoneType' is not iterable"
          }
      }
    ]},
    {
      "data": {
        "empty_column": []
      },
      "schemas": {
        "postgresql": {
          "empty_column": "TEXT"
        }
      },
      "tests": [{
        "title": "Test empty column; should be vacuously true",
        "exact_match_out": false,
        "in": {
          "column": "empty_column",
          "value_set": ["cat", "dog"],
          "catch_exceptions": false
        },
        "out": {
          "success": true
        }
      }]
  },
  {
    "data" : {
      "dates" : ["2018-01-01", "2018-01-02", "2018-01-02 00:34:01"]
    },
    "schemas": {
      "sqlite": {
        "dates": "DATETIME"
      },
      "postgresql": {
        "dates": "TIMESTAMP"
      },
      "pandas": {
        "dates": "datetime64"
      }
    },
    "tests" : [
      {
        "title": "Basic positive test case, datetime set",
        "exact_match_out": false,
        "in": {
          "column": "dates",
          "value_set": ["2018-01-01", "2018-01-02", "2018-01-02 00:34:01"],
          "parse_strings_as_datetimes": true
        },
        "out": {
          "success": true
        },
        "suppress_test_for": ["sqlite"]
    },
    {
      "title": "Basic negative test case, datetime set",
      "exact_match_out": false,
      "in": {
        "column": "dates",
        "value_set": ["2018-01-02", "2018-01-02 00:34:01"],
        "parse_strings_as_datetimes": true
      },
      "out": {
        "success": false,
        "unexpected_index_list": [0],
        "unexpected_list": ["2018-01-01T00:00:00"]
      },
      "suppress_test_for": ["sqlite"]
    }]
  }]
}