byte[] qualifier = Bytes.toBytes("qualifier");
long ts = 10;
Type type = KeyValue.Type.Put;
byte[] empty = new byte[0];
// values can be null
ClientKeyValue kv = new ClientKeyValue(wrap(row), wrap(family), wrap(qualifier), ts, type, null);
validate(kv, row, family, qualifier, ts, type, empty);
kv = new ClientKeyValue(row, family, qualifier, ts, type, null);
validate(kv, row, family, qualifier, ts, type, empty);
kv = new ClientKeyValue(row, family, qualifier, ts, type);
validate(kv, row, family, qualifier, ts, type, empty);
// qualifiers can also be null and have null values
kv = new ClientKeyValue(wrap(row), wrap(family), null, ts, type, null);
validate(kv, row, family, empty, ts, type, empty);
kv = new ClientKeyValue(row, family, null, ts, type, null);
validate(kv, row, family, empty, ts, type, empty);
kv = new ClientKeyValue(row, family, null, ts, type);
validate(kv, row, family, empty, ts, type, empty);
// and also have values
byte[] value = Bytes.toBytes("value");
kv = new ClientKeyValue(wrap(row), wrap(family), null, ts, type, wrap(value));
validate(kv, row, family, empty, ts, type, value);
kv = new ClientKeyValue(row, family, null, ts, type, value);
validate(kv, row, family, empty, ts, type, value);
// families can also be null
kv = new ClientKeyValue(wrap(row), null, null, ts, type, null);
validate(kv, row, empty, empty, ts, type, empty);
kv = new ClientKeyValue(row, null, null, ts, type, null);
validate(kv, row, empty, empty, ts, type, empty);
kv = new ClientKeyValue(row, null, null, ts, type);
validate(kv, row, empty, empty, ts, type, empty);
// but we could have a qualifier
kv = new ClientKeyValue(wrap(row), null, wrap(qualifier), ts, type, null);
validate(kv, row, empty, qualifier, ts, type, empty);
kv = new ClientKeyValue(row, null, qualifier, ts, type, null);
validate(kv, row, empty, qualifier, ts, type, empty);
kv = new ClientKeyValue(row, null, qualifier, ts, type);
validate(kv, row, empty, qualifier, ts, type, empty);
// or a real value
kv = new ClientKeyValue(wrap(row), null, wrap(qualifier), ts, type, wrap(value));
validate(kv, row, empty, qualifier, ts, type, value);
kv = new ClientKeyValue(row, null, qualifier, ts, type, value);
validate(kv, row, empty, qualifier, ts, type, value);
}