def cmp_dict(src_data,dst_data):
assert type(src_data) == type(dst_data),"type: '{}' != '{}'".format(type(src_data), type(dst_data))
if isinstance(src_data,dict):
assert len(src_data) == len(dst_data),"dict len: '{}' != '{}'".format(len(src_data), len(dst_data))
for key in src_data:
assert dst_data.has_key(key)
cmp_dict(src_data[key],dst_data[key])
elif isinstance(src_data,list):
assert len(src_data) == len(dst_data),"list len: '{}' != '{}'".format(len(src_data), len(dst_data))
for src_list, dst_list in zip(sorted(src_data), sorted(dst_data)):
cmp_dict(src_list, dst_list)
else:
assert src_data == dst_data,"value '{}' != '{}'".format(src_data, dst_data)