/*
* Copyright (c) 2015-2015 Vladimir Schneider <vladimir.schneider@gmail.com>
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.vladsch.idea.multimarkdown.spellchecking;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.junit.Test;
import static com.vladsch.idea.multimarkdown.TestUtils.compareOrderedLists;
public class TestSuggestionListFixers {
public static final String TEST_TEXT = "test text";
public static final String TEST_TEXT_1 = "test text 1";
public static final String TEST_TEXT_2 = "test text 2";
public static final String TEST_TEXT_3 = "test text 3";
public static final String PARAM_NAME = "paramName";
public static final String PARAM_NAME_1 = "paramName1";
public static final String PARAM_NAME_2 = "paramName2";
public static final String PARAM_NAME_3 = "paramName3";
private static Suggestion.Fixer fixer1 = new SuggestionFixers.FixerBase() {
@Override
public void makeSuggestions(@NotNull String text, @NotNull Suggestion suggestion, Project project) {
addSuggestion(text + ".1");
}
};
private static Suggestion.Fixer fixer2 = new SuggestionFixers.FixerBase() {
@Override
public void makeSuggestions(@NotNull String text, @NotNull Suggestion suggestion, Project project) {
addSuggestion(text + ".2");
}
};
private static Suggestion.Fixer fixer3 = new SuggestionFixers.FixerBase() {
@Override
public void makeSuggestions(@NotNull String text, @NotNull Suggestion suggestion, Project project) {
addSuggestion(text + ".3");
}
};
private static Suggestion.Fixer nullFixer = new Suggestion.Fixer() {
@Nullable
@Override
public SuggestionList fix(@NotNull Suggestion suggestion, Project project) {
return null;
}
};
@Test
public void testBatchSingleFixer() {
SuggestionList suggestionList = new SuggestionList();
suggestionList.add(TEST_TEXT_1);
suggestionList.add(TEST_TEXT_2);
suggestionList.add(TEST_TEXT_3);
SuggestionList fixed = suggestionList.batchFixers(fixer1);
SuggestionList expected = new SuggestionList();
expected.add(TEST_TEXT_1 + ".1");
expected.add(TEST_TEXT_2 + ".1");
expected.add(TEST_TEXT_3 + ".1");
compareOrderedLists(null, expected, fixed);
}
@Test
public void testSequenceSingleFixer() {
SuggestionList suggestionList = new SuggestionList();
suggestionList.add(TEST_TEXT_1);
suggestionList.add(TEST_TEXT_2);
suggestionList.add(TEST_TEXT_3);
SuggestionList fixed = suggestionList.sequenceFixers(fixer1);
SuggestionList expected = new SuggestionList();
expected.add(TEST_TEXT_1 + ".1");
expected.add(TEST_TEXT_2 + ".1");
expected.add(TEST_TEXT_3 + ".1");
compareOrderedLists(null, expected, fixed);
}
@Test
public void testChainSingleFixer() {
SuggestionList suggestionList = new SuggestionList();
suggestionList.add(TEST_TEXT_1);
suggestionList.add(TEST_TEXT_2);
suggestionList.add(TEST_TEXT_3);
SuggestionList fixed = suggestionList.chainFixers(fixer1);
SuggestionList expected = new SuggestionList();
expected.add(TEST_TEXT_1 + ".1");
expected.add(TEST_TEXT_2 + ".1");
expected.add(TEST_TEXT_3 + ".1");
compareOrderedLists(null, expected, fixed);
}
@Test
public void testBatchFixers() {
SuggestionList suggestionList = new SuggestionList();
suggestionList.add(TEST_TEXT_1);
suggestionList.add(TEST_TEXT_2);
suggestionList.add(TEST_TEXT_3);
SuggestionList fixed = suggestionList.batchFixers(fixer1, fixer2, fixer3);
SuggestionList expected = new SuggestionList();
expected.add(TEST_TEXT_1 + ".1");
expected.add(TEST_TEXT_2 + ".1");
expected.add(TEST_TEXT_3 + ".1");
expected.add(TEST_TEXT_1 + ".2");
expected.add(TEST_TEXT_2 + ".2");
expected.add(TEST_TEXT_3 + ".2");
expected.add(TEST_TEXT_1 + ".3");
expected.add(TEST_TEXT_2 + ".3");
expected.add(TEST_TEXT_3 + ".3");
compareOrderedLists(null, expected, fixed);
}
@Test
public void testSequenceFixer() {
SuggestionList suggestionList = new SuggestionList();
suggestionList.add(TEST_TEXT_1);
suggestionList.add(TEST_TEXT_2);
suggestionList.add(TEST_TEXT_3);
SuggestionList fixed = suggestionList.sequenceFixers(fixer1, fixer2, fixer3);
SuggestionList expected = new SuggestionList();
expected.add(TEST_TEXT_1 + ".1");
expected.add(TEST_TEXT_1 + ".2");
expected.add(TEST_TEXT_1 + ".3");
expected.add(TEST_TEXT_2 + ".1");
expected.add(TEST_TEXT_2 + ".2");
expected.add(TEST_TEXT_2 + ".3");
expected.add(TEST_TEXT_3 + ".1");
expected.add(TEST_TEXT_3 + ".2");
expected.add(TEST_TEXT_3 + ".3");
compareOrderedLists(null, expected, fixed);
}
@Test
public void testChainFixer() {
SuggestionList suggestionList = new SuggestionList();
suggestionList.add(TEST_TEXT_1);
suggestionList.add(TEST_TEXT_2);
suggestionList.add(TEST_TEXT_3);
SuggestionList fixed = suggestionList.chainFixers(fixer1,fixer2,fixer3);
SuggestionList expected = new SuggestionList();
expected.add(TEST_TEXT_1 + ".1.2.3");
expected.add(TEST_TEXT_2 + ".1.2.3");
expected.add(TEST_TEXT_3 + ".1.2.3");
compareOrderedLists(null, expected, fixed);
}
@Test
public void testNullBatchFixers() {
SuggestionList suggestionList = new SuggestionList();
suggestionList.add(TEST_TEXT_1);
suggestionList.add(TEST_TEXT_2);
suggestionList.add(TEST_TEXT_3);
SuggestionList expected = new SuggestionList();
expected.add(TEST_TEXT_1 + ".1");
expected.add(TEST_TEXT_2 + ".1");
expected.add(TEST_TEXT_3 + ".1");
expected.add(TEST_TEXT_1 + ".2");
expected.add(TEST_TEXT_2 + ".2");
expected.add(TEST_TEXT_3 + ".2");
expected.add(TEST_TEXT_1 + ".3");
expected.add(TEST_TEXT_2 + ".3");
expected.add(TEST_TEXT_3 + ".3");
SuggestionList fixed = suggestionList.batchFixers(null, fixer1, fixer2, fixer3);
compareOrderedLists(null, expected, fixed);
SuggestionList fixed1 = suggestionList.batchFixers(fixer1, null, fixer2, fixer3);
compareOrderedLists(null, expected, fixed1);
SuggestionList fixed2 = suggestionList.batchFixers(fixer1, fixer2, null, fixer3);
compareOrderedLists(null, expected, fixed2);
SuggestionList fixed3 = suggestionList.batchFixers(fixer1, fixer2, fixer3, null);
compareOrderedLists(null, expected, fixed3);
}
@Test
public void testNullSequenceFixer() {
SuggestionList suggestionList = new SuggestionList();
suggestionList.add(TEST_TEXT_1);
suggestionList.add(TEST_TEXT_2);
suggestionList.add(TEST_TEXT_3);
SuggestionList expected = new SuggestionList();
expected.add(TEST_TEXT_1 + ".1");
expected.add(TEST_TEXT_1 + ".2");
expected.add(TEST_TEXT_1 + ".3");
expected.add(TEST_TEXT_2 + ".1");
expected.add(TEST_TEXT_2 + ".2");
expected.add(TEST_TEXT_2 + ".3");
expected.add(TEST_TEXT_3 + ".1");
expected.add(TEST_TEXT_3 + ".2");
expected.add(TEST_TEXT_3 + ".3");
SuggestionList fixed = suggestionList.sequenceFixers(null, fixer1, fixer2, fixer3);
compareOrderedLists(null, expected, fixed);
SuggestionList fixed1 = suggestionList.sequenceFixers(fixer1, null, fixer2, fixer3);
compareOrderedLists(null, expected, fixed1);
SuggestionList fixed2 = suggestionList.sequenceFixers(fixer1, fixer2, null, fixer3);
compareOrderedLists(null, expected, fixed2);
SuggestionList fixed3 = suggestionList.sequenceFixers(fixer1, fixer2, fixer3, null);
compareOrderedLists(null, expected, fixed3);
}
@Test
public void testNullChainFixer() {
SuggestionList suggestionList = new SuggestionList();
suggestionList.add(TEST_TEXT_1);
suggestionList.add(TEST_TEXT_2);
suggestionList.add(TEST_TEXT_3);
SuggestionList expected = new SuggestionList();
expected.add(TEST_TEXT_1 + ".1.2.3");
expected.add(TEST_TEXT_2 + ".1.2.3");
expected.add(TEST_TEXT_3 + ".1.2.3");
SuggestionList fixed = suggestionList.chainFixers(null, fixer1, fixer2, fixer3);
compareOrderedLists(null, expected, fixed);
SuggestionList fixed1 = suggestionList.chainFixers(fixer1, null, fixer2, fixer3);
compareOrderedLists(null, expected, fixed1);
SuggestionList fixed2 = suggestionList.chainFixers(fixer1, fixer2, null, fixer3);
compareOrderedLists(null, expected, fixed2);
SuggestionList fixed3 = suggestionList.chainFixers(fixer1, fixer2, fixer3, null);
compareOrderedLists(null, expected, fixed3);
}
@Test
public void testNullFixerBatchFixers() {
SuggestionList suggestionList = new SuggestionList();
suggestionList.add(TEST_TEXT_1);
suggestionList.add(TEST_TEXT_2);
suggestionList.add(TEST_TEXT_3);
SuggestionList expected = new SuggestionList();
expected.add(TEST_TEXT_1 + ".1");
expected.add(TEST_TEXT_2 + ".1");
expected.add(TEST_TEXT_3 + ".1");
expected.add(TEST_TEXT_1 + ".2");
expected.add(TEST_TEXT_2 + ".2");
expected.add(TEST_TEXT_3 + ".2");
expected.add(TEST_TEXT_1 + ".3");
expected.add(TEST_TEXT_2 + ".3");
expected.add(TEST_TEXT_3 + ".3");
SuggestionList fixed = suggestionList.batchFixers(nullFixer, fixer1, fixer2, fixer3);
compareOrderedLists(null, expected, fixed);
SuggestionList fixed1 = suggestionList.batchFixers(fixer1, nullFixer, fixer2, fixer3);
compareOrderedLists(null, expected, fixed1);
SuggestionList fixed2 = suggestionList.batchFixers(fixer1, fixer2, nullFixer, fixer3);
compareOrderedLists(null, expected, fixed2);
SuggestionList fixed3 = suggestionList.batchFixers(fixer1, fixer2, fixer3, nullFixer);
compareOrderedLists(null, expected, fixed3);
}
@Test
public void testNullFixerSequenceFixer() {
SuggestionList suggestionList = new SuggestionList();
suggestionList.add(TEST_TEXT_1);
suggestionList.add(TEST_TEXT_2);
suggestionList.add(TEST_TEXT_3);
SuggestionList expected = new SuggestionList();
expected.add(TEST_TEXT_1 + ".1");
expected.add(TEST_TEXT_1 + ".2");
expected.add(TEST_TEXT_1 + ".3");
expected.add(TEST_TEXT_2 + ".1");
expected.add(TEST_TEXT_2 + ".2");
expected.add(TEST_TEXT_2 + ".3");
expected.add(TEST_TEXT_3 + ".1");
expected.add(TEST_TEXT_3 + ".2");
expected.add(TEST_TEXT_3 + ".3");
SuggestionList fixed = suggestionList.sequenceFixers(nullFixer, fixer1, fixer2, fixer3);
compareOrderedLists(null, expected, fixed);
SuggestionList fixed1 = suggestionList.sequenceFixers(fixer1, nullFixer, fixer2, fixer3);
compareOrderedLists(null, expected, fixed1);
SuggestionList fixed2 = suggestionList.sequenceFixers(fixer1, fixer2, nullFixer, fixer3);
compareOrderedLists(null, expected, fixed2);
SuggestionList fixed3 = suggestionList.sequenceFixers(fixer1, fixer2, fixer3, nullFixer);
compareOrderedLists(null, expected, fixed3);
}
@Test
public void testNullFixerChainFixer() {
SuggestionList suggestionList = new SuggestionList();
suggestionList.add(TEST_TEXT_1);
suggestionList.add(TEST_TEXT_2);
suggestionList.add(TEST_TEXT_3);
SuggestionList expected = new SuggestionList();
//expected.add(TEST_TEXT_1 + ".1.2.3");
//expected.add(TEST_TEXT_2 + ".1.2.3");
//expected.add(TEST_TEXT_3 + ".1.2.3");
SuggestionList fixed = suggestionList.chainFixers(nullFixer, fixer1, fixer2, fixer3);
compareOrderedLists(null, expected, fixed);
SuggestionList fixed1 = suggestionList.chainFixers(fixer1, nullFixer, fixer2, fixer3);
compareOrderedLists(null, expected, fixed1);
SuggestionList fixed2 = suggestionList.chainFixers(fixer1, fixer2, nullFixer, fixer3);
compareOrderedLists(null, expected, fixed2);
SuggestionList fixed3 = suggestionList.chainFixers(fixer1, fixer2, fixer3, nullFixer);
compareOrderedLists(null, expected, fixed3);
}
}