// Copyright 2012 Google Inc. All Rights Reserved.
//
// 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.google.collide.client.editor.input;
import static org.waveprotocol.wave.client.common.util.SignalEvent.KeySignalType.NAVIGATION;
import com.google.collide.client.editor.Editor;
import com.google.collide.client.testing.MockAppContext;
import com.google.collide.client.util.input.KeyCodeMap;
import com.google.collide.client.util.input.ModifierKeys;
import com.google.collide.shared.document.Document;
import com.google.collide.shared.document.LineInfo;
import com.google.gwt.junit.client.GWTTestCase;
/**
* Test cases for {@link DefaultScheme}.
*/
public class DefaultSchemeTest extends GWTTestCase {
@Override
public String getModuleName() {
return "com.google.collide.client.TestCode";
}
public void testAltMovementIsNotCosumed() {
DefaultScheme scheme = new DefaultScheme(new InputController());
int[] keys = new int[] {
KeyCodeMap.ARROW_LEFT, KeyCodeMap.ARROW_RIGHT, KeyCodeMap.ARROW_UP, KeyCodeMap.ARROW_DOWN};
int[][] modifiers = new int[][] {{ModifierKeys.ALT},
{ModifierKeys.ALT, ModifierKeys.ACTION},
{ModifierKeys.ALT, ModifierKeys.SHIFT},
{ModifierKeys.ALT, ModifierKeys.ACTION, ModifierKeys.SHIFT}};
for (int i = 0; i < keys.length; i++) {
for (int j = 0; j < modifiers.length; j++) {
TestSignalEvent event = new TestSignalEvent(keys[i], NAVIGATION, modifiers[j]);
assertFalse("i = " + i + "; j = " + j, scheme.defaultMode.onDefaultInput(event, (char) 0));
}
}
}
public void testCutWithoutSelectionAtLastEmptyLine() {
String text = "first\nsecond\n";
checkCut(text, 2, 0, text);
// Assert: still alive.
}
private void checkCut(String text, int line, int column, String expected) {
Document document = Document.createFromString(text);
final Editor editor = Editor.create(new MockAppContext());
editor.setDocument(document);
LineInfo lineInfo = document.getLineFinder().findLine(line);
editor.getSelection().setSelection(lineInfo, column, lineInfo, column);
editor.getInput().processSignalEvent(TestCutPasteEvent.create(null));
assertEquals(expected, document.asText());
}
}