/*******************************************************************************
* Copyright (c) 2008 Ralf Ebert
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Ralf Ebert - initial API and implementation
*******************************************************************************/
package com.swtxml.util.proposals;
import static org.junit.Assert.assertEquals;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import com.swtxml.util.parser.Splitter;
public class MatchTest {
private Match m;
private Match m2;
@Before
public void setup() {
m = new Match("123456", 3);
m2 = new Match("\"123§456\"");
}
@Test
public void testMatch() {
assertEquals("123§456", m.toString());
assertEquals("123§456", new Match(m.toString()).toString());
}
@Test
public void testReplaceBeforeCursor() {
assertEquals("1xxx3§456", m.replace("xxx", 1, 1).toString());
}
@Test
public void testReplaceAfterCursor() {
assertEquals("123§4xxx6", m.replace("xxx", 4, 1).toString());
}
@Test
public void testInsertBeforeCursor() {
assertEquals("1xxx23§456", m.insert("xxx", 1).toString());
}
@Test
public void testInsertAfterCursor() {
assertEquals("123§4xxx56", m.insert("xxx", 4).toString());
}
@Test
public void testInsertAroundMatch() {
m = m.insertAroundMatch("yy", "xxx");
assertEquals("yy123§456xxx", m.toString());
assertEquals("123456", m.getText());
}
@Test
public void handleQuotes() {
assertEquals("\"123§456\"", m.handleQuotes().toString());
assertEquals("\"123§456\"", m2.handleQuotes().toString());
assertEquals("123456", m.handleQuotes().getText());
assertEquals("123456", m2.handleQuotes().getText());
assertEquals("\"123456\"", m.handleQuotes().getReplacementText());
assertEquals("\"123456\"", m2.handleQuotes().getReplacementText());
}
@Test
public void testInsertAroundMatchWithQuotes() {
m = m.handleQuotes().insertAroundMatch("yy", "xxx");
assertEquals("\"yy123§456xxx\"", m.toString());
assertEquals("123456", m.getText());
}
@Test
public void insertWorksWithOffsets() {
assertEquals("\"12xxx3§456\"", m2.handleQuotes().insert("xxx", 2).toString());
}
@Test
public void restrict() {
m = new Match("123,456.7§89,012");
m = m.restrict(new Splitter(",."));
assertEquals("789", m.getText());
m = m.replace("xxx");
assertEquals("xxx", m.getText());
assertEquals("123,456.xxx§,012", m.toString());
}
@Test
public void getTextBeforeCursor() {
assertEquals("7", new Match("123,456.7§89,012").restrict(new Splitter(",."))
.getTextBeforeCursor());
assertEquals("", new Match("123,456.§789,012").restrict(new Splitter(",."))
.getTextBeforeCursor());
}
@Test
public void testProposeNoResults() {
m = new Match("123,456.7§89,012").restrict(new Splitter(",."));
List<Match> proposals = m.propose("red", "green", "blue");
assertEquals(0, proposals.size());
}
@Test
public void testProposeFiltered() {
m = new Match("123,456.r§89,012").restrict(new Splitter(",."));
List<Match> proposals = m.propose("red", "green", "blue");
assertEquals(1, proposals.size());
assertEquals("red", proposals.get(0).getText());
assertEquals("123,456.red§,012", proposals.get(0).toString());
}
@Test
public void testProposeAll() {
m = new Match("123,456.§89,012").restrict(new Splitter(",."));
List<Match> proposals = m.propose("red", "green", "blue");
assertEquals(3, proposals.size());
assertEquals("blue", proposals.get(0).getText());
assertEquals("123,456.blue§,012", proposals.get(0).toString());
}
@Test
public void testCursorAfterReplacement() {
assertEquals("test§", new Match("§").replace("test").toString());
assertEquals("test§", new Match("t§").replace("test").toString());
assertEquals("\"test§\"", new Match("\"§\"").handleQuotes().replace("test").toString());
assertEquals("\"test§\"", new Match("\"t§\"").handleQuotes().replace("test").toString());
}
}