| /* |
| * Copyright (c) 2012 Google Inc. |
| * |
| * 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 |
| */ |
| package com.google.eclipse.protobuf.ui.editor.model; |
| |
| import static com.google.eclipse.protobuf.ui.preferences.editor.save.SaveActionsWritablePreferences.RemoveTrailingWhitespace.*; |
| import static org.junit.Assert.assertEquals; |
| |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotEclipseEditor; |
| import org.junit.*; |
| |
| import com.google.eclipse.protobuf.junit.util.MultiLineTextBuilder; |
| import com.google.eclipse.protobuf.ui.junit.XtextRule; |
| import com.google.eclipse.protobuf.ui.preferences.editor.save.SaveActionsWritablePreferences; |
| import com.google.eclipse.protobuf.ui.swtbot.ProtobufBot; |
| import com.google.inject.Inject; |
| |
| /** |
| * Tests for <code>{@link ProtobufDocumentProvider}</code> |
| * |
| * @author alruiz@google.com (Alex Ruiz) |
| */ |
| public class ProtobufDocumentProvider_Test { |
| private static ProtobufBot robot; |
| private static SWTBotEclipseEditor editor; |
| |
| @BeforeClass public static void setUpOnce() throws CoreException { |
| robot = new ProtobufBot(); |
| robot.resetAll(); |
| robot.createGeneralProject("ProtobufDocumentProvider"); |
| editor = robot.createFile("test.proto"); |
| } |
| |
| @Rule public XtextRule xtext = new XtextRule(); |
| |
| @Inject private SaveActionsWritablePreferences preferences; |
| |
| @Test public void should_remove_trailing_whitespace_in_edited_lines_only() { |
| initEditor(); |
| preferences.removeTrailingWhitespace(EDITED_LINES); |
| editor.typeText("option optimize_for = SPEED; "); |
| editor.save(); |
| MultiLineTextBuilder expected = new MultiLineTextBuilder(); |
| expected.append("syntax = 'proto2'; ") |
| .append("import 'google/protobuf/descriptor.proto'; ") |
| .append("option optimize_for = SPEED;"); |
| assertEquals(expected.toString(), editor.getText()); |
| } |
| |
| @Test public void should_remove_trailing_whitespace_in_all_lines() { |
| initEditor(); |
| preferences.removeTrailingWhitespace(ALL_LINES); |
| editor.typeText("option optimize_for = SPEED; "); |
| editor.save(); |
| MultiLineTextBuilder expected = new MultiLineTextBuilder(); |
| expected.append("syntax = 'proto2';") |
| .append("import 'google/protobuf/descriptor.proto';") |
| .append("option optimize_for = SPEED;"); |
| assertEquals(expected.toString(), editor.getText()); |
| } |
| |
| private void initEditor() { |
| preferences.removeTrailingWhitespace(NONE); |
| MultiLineTextBuilder text = new MultiLineTextBuilder(); |
| text.append("syntax = 'proto2'; ") |
| .append("import 'google/protobuf/descriptor.proto'; ") |
| .append(""); |
| editor.setText(text.toString()); |
| editor.save(); |
| editor.navigateTo(2, 0); |
| } |
| } |