Add a unit test for the AsciidoctorFormatter

Change-Id: Iceff1d61512b9489e3a0a2bee9e3c5b208635853
diff --git a/src/test/java/com/googlesource/gerrit/plugins/x-docs/AsciidoctorFormatterTest.java b/src/test/java/com/googlesource/gerrit/plugins/x-docs/AsciidoctorFormatterTest.java
new file mode 100644
index 0000000..903c9e1
--- /dev/null
+++ b/src/test/java/com/googlesource/gerrit/plugins/x-docs/AsciidoctorFormatterTest.java
@@ -0,0 +1,78 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.googlesource.gerrit.plugins.xdocs.formatter;
+
+import static org.easymock.EasyMock.*;
+import static org.junit.Assert.assertEquals;
+
+import com.googlesource.gerrit.plugins.xdocs.ConfigSection;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.apache.commons.lang.StringUtils;
+import org.easymock.IAnswer;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+
+public class AsciidoctorFormatterTest {
+
+  private ConfigSection cfg;
+  private AsciidoctorFormatter formatter;
+
+  @Rule
+  public TemporaryFolder tmp = new TemporaryFolder();
+
+  @Before
+  public void setUp() throws IOException {
+    FormatterUtil util = createNiceMock(FormatterUtil.class);
+
+    // To simplify things, make applyCss() a no-op and return the HTML code as-is.
+    expect(util.applyCss(anyString(), anyString(), anyString())).andAnswer(
+      new IAnswer<String>() {
+        @Override
+        public String answer() throws Throwable {
+          // The first argument is the HTML code.
+          return (String) getCurrentArguments()[0];
+        }
+      }
+    );
+
+    replay(util);
+
+    cfg = createNiceMock(ConfigSection.class);
+
+    // Do not expect any behavior from the ConfigSection itself.
+    replay(cfg);
+
+    Formatters formatters = createNiceMock(Formatters.class);
+
+    // Avoid a NPE by just returning the ConfigSection mock object.
+    expect(formatters.getFormatterConfig(anyString(), anyString())).andReturn(cfg);
+
+    replay(formatters);
+
+    formatter = new AsciidoctorFormatter(tmp.newFolder(), util, formatters);
+  }
+
+  @Test
+  public void basicTextFormattingWorks() throws IOException {
+    String raw = "_italic_ *bold* `monospace`";
+    String formatted = "<em>italic</em> <strong>bold</strong> <code>monospace</code>";
+    assertEquals(StringUtils.countMatches(formatter.format(null, null, null, null, cfg, raw), formatted), 1);
+  }
+}