AT_BANNER([OVSDB -- tables])

OVSDB_CHECK_POSITIVE_CPY([non-root table with one column],
  [[parse-table mytable '{"columns": {"name": {"type": "string"}}}']],
  [[{"columns":{"name":{"type":"string"}}}]])

OVSDB_CHECK_POSITIVE_CPY([immutable table with one column],
  [[parse-table mytable \
    '{"columns": {"name": {"type": "string"}},
      "mutable": false}']],
  [[{"columns":{"name":{"type":"string"}},"mutable":false}]])

OVSDB_CHECK_POSITIVE_CPY([root table with one column],
  [[parse-table mytable \
    '{"columns": {"name": {"type": "string"}},
      "isRoot": true}']],
  [[{"columns":{"name":{"type":"string"}},"isRoot":true}]])

OVSDB_CHECK_POSITIVE_CPY([non-root table with default_is_root=true],
  [[parse-table mytable '{"columns": {"name": {"type": "string"}}}' true]],
  [[{"columns":{"name":{"type":"string"}},"isRoot":false}]])

OVSDB_CHECK_POSITIVE_CPY([root table with default_is_root=true],
  [[parse-table mytable \
    '{"columns": {"name": {"type": "string"}},
      "isRoot": true}' true]],
  [[{"columns":{"name":{"type":"string"}}}]])

OVSDB_CHECK_POSITIVE_CPY([table with maxRows of 2],
  [[parse-table mytable '{"columns": {"name": {"type": "string"}}, 
                          "maxRows": 2}']],
  [[{"columns":{"name":{"type":"string"}},"maxRows":2}]])

OVSDB_CHECK_POSITIVE_CPY([table with index],
  [[parse-table mytable '{"columns": {"a": {"type": "integer"},
                                      "b": {"type": "string"}},
                          "indexes": [["b", "a"]]}']],
  [[{"columns":{"a":{"type":"integer"},"b":{"type":"string"}},"indexes":[["b","a"]]}]])

OVSDB_CHECK_NEGATIVE_CPY([table with syntax error in index],
  [[parse-table mytable '{"columns": {"a": {"type": "integer"},
                                      "b": {"type": "string"}},
                          "indexes": [["b", "a"], [0]]}']],
  [[array of distinct column names expected]])

OVSDB_CHECK_NEGATIVE_CPY([table with empty index],
  [[parse-table mytable '{"columns": {"a": {"type": "integer"},
                                      "b": {"type": "string"}},
                          "indexes": [[]]}']],
  [[index must have at least one column]])

OVSDB_CHECK_NEGATIVE_CPY([table with index of ephemeral column],
  [[parse-table mytable '{"columns": {"a": {"type": "integer",
                                            "ephemeral": true},
                                      "b": {"type": "string"}},
                          "indexes": [["b", "a"]]}']],
  [[ephemeral columns (such as a) may not be indexed]])

OVSDB_CHECK_NEGATIVE_CPY([column names may not begin with _],
  [[parse-table mytable \
    '{"columns": {"_column": {"type": "integer"}}}']],
  [[names beginning with "_" are reserved]],
  [table])

OVSDB_CHECK_NEGATIVE_CPY([table must have at least one column (1)],
  [[parse-table mytable '{}']],
  [[Parsing table schema for table mytable failed: Required 'columns' member is missing.]])

OVSDB_CHECK_NEGATIVE_CPY([table must have at least one column (2)],
  [[parse-table mytable '{"columns": {}}']],
  [[table must have at least one column]])

OVSDB_CHECK_NEGATIVE_CPY([table maxRows must be positive],
  [[parse-table mytable '{"columns": {"name": {"type": "string"}}, 
                          "maxRows": 0}']],
  [[syntax "{"columns":{"name":{"type":"string"}},"maxRows":0}": syntax error: maxRows must be at least 1]])
