@Test
public void load () {

  ClassLoader classLoader = getClass().getClassLoader();
  File file = new File(classLoader.getResource("connector.yml").getFile());
  Config config = Config.load(file);
  Defaults defaults = config.getDefaults();
  assertThat(defaults)
      .isNotNull();
  SoftAssertions.assertSoftly(softly -> {
    softly.assertThat(defaults.getEpmdPort())
        .isEqualTo(8888);
    softly.assertThat(defaults.getType())
        .isEqualTo(R3_ERLANG);
    softly.assertThat(defaults.getShortName())
        .isTrue();
    softly.assertThat(defaults.getCookie())
        .isEqualTo("secret");
    softly.assertThat(defaults.getProtocol())
        .isEqualTo(UDP);
    softly.assertThat(defaults.getLowVersion())
        .isEqualTo(R4);
    softly.assertThat(defaults.getHighVersion())
        .isEqualTo(R6);
    softly.assertThat(defaults.getDistributionFlags())
        .contains(MAP_TAG, BIG_CREATION);
    softly.assertThat(defaults.getServer())
        .isNotNull();
    softly.assertThat(defaults.getServer().getPort())
        .isNull();
    softly.assertThat(defaults.getServer().getBossThreads())
        .isEqualTo(2);
    softly.assertThat(defaults.getServer().getWorkerThreads())
        .isEqualTo(4);
  });
  Map<String, NodeConfig> nodes = config.getNodes();
  assertThat(nodes).isNotNull();
  NodeConfig node1 = nodes.get("node-1");
  assertThat(node1).isNotNull();
  SoftAssertions.assertSoftly(softly -> {
    softly.assertThat(node1.getEpmdPort())
        .isEqualTo(7373);
    softly.assertThat(node1.getType())
        .isEqualTo(R3_HIDDEN);
    softly.assertThat(node1.getShortName())
        .isTrue();
    softly.assertThat(node1.getCookie())
        .isEqualTo("non-secret");
    softly.assertThat(node1.getProtocol())
        .isEqualTo(SCTP);
    softly.assertThat(node1.getLowVersion())
        .isEqualTo(R5C);
    softly.assertThat(node1.getHighVersion())
        .isEqualTo(R6);
    softly.assertThat(node1.getDistributionFlags()).contains(
        EXTENDED_REFERENCES,
        EXTENDED_PIDS_PORTS,
        BIT_BINARIES,
        NEW_FLOATS,
        FUN_TAGS,
        NEW_FUN_TAGS,
        UTF8_ATOMS,
        MAP_TAG,
        BIG_CREATION
    );
    softly.assertThat(node1.getMailboxes())
        .isNotEmpty();
    MailboxConfig mailbox1 = node1.getMailboxes()
        .stream()
        .filter(it -> "net_kernel".equals(it.getName()))
        .findFirst()
        .orElse(null);
    assertThat(mailbox1).isNotNull();
    MailboxConfig mailbox2 = node1.getMailboxes()
        .stream()
        .filter(it -> "another".equals(it.getName()))
        .findFirst()
        .orElse(null);
    assertThat(mailbox2).isNotNull();
    MailboxConfig mailbox3 = node1.getMailboxes()
        .stream()
        .filter(it -> "another_one".equals(it.getName()))
        .findFirst()
        .orElse(null);
    assertThat(mailbox3).isNotNull();
    softly.assertThat(node1.getServer())
        .isNotNull();
    softly.assertThat(node1.getServer().getPort())
        .isEqualTo(8971);
    softly.assertThat(node1.getServer().getBossThreads())
        .isEqualTo(1);
    softly.assertThat(node1.getServer().getWorkerThreads())
        .isEqualTo(2);
  });
  NodeConfig node2 = nodes.get("node-2");
  assertThat(node2).isNotNull();
  SoftAssertions.assertSoftly(softly -> {
    softly.assertThat(node2.getEpmdPort())
        .isEqualTo(8888);
    softly.assertThat(node2.getType())
        .isEqualTo(R3_ERLANG);
    softly.assertThat(node2.getShortName())
        .isFalse();
    softly.assertThat(node2.getCookie())
        .isEqualTo("popa");
    softly.assertThat(node2.getProtocol())
        .isEqualTo(UDP);
    softly.assertThat(node2.getLowVersion())
        .isEqualTo(R4);
    softly.assertThat(node2.getHighVersion())
        .isEqualTo(R6);
    softly.assertThat(node2.getDistributionFlags()).contains(
        MAP_TAG,
        BIG_CREATION
    );
    softly.assertThat(node2.getMailboxes())
        .isNotEmpty();
    MailboxConfig mailbox1 = node2.getMailboxes()
        .stream()
        .filter(it -> "net_kernel".equals(it.getName()))
        .findFirst()
        .orElse(null);
    assertThat(mailbox1).isNotNull();
    softly.assertThat(node2.getServer())
        .isNotNull();
    softly.assertThat(node2.getServer().getPort())
        .isNotNull();
    softly.assertThat(node2.getServer().getBossThreads())
        .isEqualTo(2);
    softly.assertThat(node2.getServer().getWorkerThreads())
        .isEqualTo(4);
  });
}