@Test
public void testManyObjectParameters() {

  FakeLoggerBackend backend = new FakeLoggerBackend();
  FluentLogger logger = new FluentLogger(backend);
  String ms = "Any message will do...";
  // Verify that the arguments passed in to the Object based methods are mapped correctly.
  logger.atInfo().log(ms, "1");
  backend.assertLastLogged().hasArguments("1");
  logger.atInfo().log(ms, "1", "2");
  backend.assertLastLogged().hasArguments("1", "2");
  logger.atInfo().log(ms, "1", "2", "3");
  backend.assertLastLogged().hasArguments("1", "2", "3");
  logger.atInfo().log(ms, "1", "2", "3", "4");
  backend.assertLastLogged().hasArguments("1", "2", "3", "4");
  logger.atInfo().log(ms, "1", "2", "3", "4", "5");
  backend.assertLastLogged().hasArguments("1", "2", "3", "4", "5");
  logger.atInfo().log(ms, "1", "2", "3", "4", "5", "6");
  backend.assertLastLogged().hasArguments("1", "2", "3", "4", "5", "6");
  logger.atInfo().log(ms, "1", "2", "3", "4", "5", "6", "7");
  backend.assertLastLogged().hasArguments("1", "2", "3", "4", "5", "6", "7");
  logger.atInfo().log(ms, "1", "2", "3", "4", "5", "6", "7", "8");
  backend.assertLastLogged().hasArguments("1", "2", "3", "4", "5", "6", "7", "8");
  logger.atInfo().log(ms, "1", "2", "3", "4", "5", "6", "7", "8", "9");
  backend.assertLastLogged().hasArguments("1", "2", "3", "4", "5", "6", "7", "8", "9");
  logger.atInfo().log(ms, "1", "2", "3", "4", "5", "6", "7", "8", "9", "10");
  backend.assertLastLogged().hasArguments("1", "2", "3", "4", "5", "6", "7", "8", "9", "10");
  logger.atInfo().log(ms, "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11");
  backend
      .assertLastLogged()
      .hasArguments("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11");
  logger.atInfo().log(ms, "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12");
  backend
      .assertLastLogged()
      .hasArguments("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12");
}