### Question:
TableMeta implements ProtoObject<CatalogProtos.TableProto>, GsonObject, Cloneable { public TableProto getProto() { mergeLocalToProto(); proto = viaProto ? proto : builder.build(); viaProto = true; return proto; } private  TableMeta();  TableMeta(StoreType type, Options options);  TableMeta(TableProto proto); StoreType getStoreType(); void setOptions(Options options); void putOption(String key, String val); String getOption(String key); String getOption(String key, String defaultValue); Options getOptions(); Map<String,String> toMap(); boolean equals(Object object); int hashCode(); @Override Object clone(); String toString(); TableProto getProto(); @Override String toJson(); void mergeProtoToLocal();  }### Answer:
@Test public void testTableMetaTableProto() { Schema schema1 = new Schema(); schema1.addColumn("name", Type.BLOB); schema1.addColumn("addr", Type.TEXT); TableMeta meta1 = CatalogUtil.newTableMeta(StoreType.CSV); TableMeta meta2 = new TableMeta(meta1.getProto()); assertEquals(meta1, meta2); }
@Test public void testGetProto() { TableProto proto = meta.getProto(); TableMeta newMeta = new TableMeta(proto); assertEquals(meta, newMeta); }