@Test
public void testIsNodeAttributesEquals() {

  NodeAttribute nodeAttributeCK1V1 = NodeAttribute
      .newInstance(NodeAttribute.PREFIX_CENTRALIZED, "K1",
          NodeAttributeType.STRING, "V1");
  NodeAttribute nodeAttributeCK1V1Copy = NodeAttribute
      .newInstance(NodeAttribute.PREFIX_CENTRALIZED, "K1",
          NodeAttributeType.STRING, "V1");
  NodeAttribute nodeAttributeDK1V1 = NodeAttribute
      .newInstance(NodeAttribute.PREFIX_DISTRIBUTED, "K1",
          NodeAttributeType.STRING, "V1");
  NodeAttribute nodeAttributeDK1V1Copy = NodeAttribute
      .newInstance(NodeAttribute.PREFIX_DISTRIBUTED, "K1",
          NodeAttributeType.STRING, "V1");
  NodeAttribute nodeAttributeDK2V1 = NodeAttribute
      .newInstance(NodeAttribute.PREFIX_DISTRIBUTED, "K2",
          NodeAttributeType.STRING, "V1");
  NodeAttribute nodeAttributeDK2V2 = NodeAttribute
      .newInstance(NodeAttribute.PREFIX_DISTRIBUTED, "K2",
          NodeAttributeType.STRING, "V2");
  /*
   * equals if set size equals and items are all the same
   */
  Assert.assertTrue(NodeLabelUtil.isNodeAttributesEquals(null, null));
  Assert.assertTrue(NodeLabelUtil
      .isNodeAttributesEquals(ImmutableSet.of(), ImmutableSet.of()));
  Assert.assertTrue(NodeLabelUtil
      .isNodeAttributesEquals(ImmutableSet.of(nodeAttributeCK1V1),
          ImmutableSet.of(nodeAttributeCK1V1Copy)));
  Assert.assertTrue(NodeLabelUtil
      .isNodeAttributesEquals(ImmutableSet.of(nodeAttributeDK1V1),
          ImmutableSet.of(nodeAttributeDK1V1Copy)));
  Assert.assertTrue(NodeLabelUtil.isNodeAttributesEquals(
      ImmutableSet.of(nodeAttributeCK1V1, nodeAttributeDK1V1),
      ImmutableSet.of(nodeAttributeCK1V1Copy, nodeAttributeDK1V1Copy)));
  /*
   * not equals if set size not equals or items are different
   */
  Assert.assertFalse(
      NodeLabelUtil.isNodeAttributesEquals(null, ImmutableSet.of()));
  Assert.assertFalse(
      NodeLabelUtil.isNodeAttributesEquals(ImmutableSet.of(), null));
  // different attribute prefix
  Assert.assertFalse(NodeLabelUtil
      .isNodeAttributesEquals(ImmutableSet.of(nodeAttributeCK1V1),
          ImmutableSet.of(nodeAttributeDK1V1)));
  // different attribute name
  Assert.assertFalse(NodeLabelUtil
      .isNodeAttributesEquals(ImmutableSet.of(nodeAttributeDK1V1),
          ImmutableSet.of(nodeAttributeDK2V1)));
  // different attribute value
  Assert.assertFalse(NodeLabelUtil
      .isNodeAttributesEquals(ImmutableSet.of(nodeAttributeDK2V1),
          ImmutableSet.of(nodeAttributeDK2V2)));
  // different set
  Assert.assertFalse(NodeLabelUtil
      .isNodeAttributesEquals(ImmutableSet.of(nodeAttributeCK1V1),
          ImmutableSet.of()));
  Assert.assertFalse(NodeLabelUtil
      .isNodeAttributesEquals(ImmutableSet.of(nodeAttributeCK1V1),
          ImmutableSet.of(nodeAttributeCK1V1, nodeAttributeDK1V1)));
  Assert.assertFalse(NodeLabelUtil.isNodeAttributesEquals(
      ImmutableSet.of(nodeAttributeCK1V1, nodeAttributeDK1V1),
      ImmutableSet.of(nodeAttributeDK1V1)));
}