PY-19610 Extract methods for tests Add tests
authorValentina Kiryushkina <valentina.kiryushkina@jetbrains.com>
Tue, 13 Sep 2016 13:13:39 +0000 (16:13 +0300)
committerValentina Kiryushkina <valentina.kiryushkina@jetbrains.com>
Wed, 28 Sep 2016 11:36:06 +0000 (14:36 +0300)
python/ipnb/src/org/jetbrains/plugins/ipnb/editor/actions/IpnbAddCellAboveAction.java
python/ipnb/src/org/jetbrains/plugins/ipnb/editor/actions/IpnbAddCellBelowAction.java
python/ipnb/src/org/jetbrains/plugins/ipnb/editor/actions/IpnbRunCellBaseAction.java
python/ipnb/src/org/jetbrains/plugins/ipnb/editor/panels/IpnbFilePanel.java
python/ipnb/src/org/jetbrains/plugins/ipnb/format/cells/IpnbCodeCell.java
python/ipnb/testData/emptyFile.ipynb [new file with mode: 0644]
python/ipnb/testSrc/CellOperationTest.java [new file with mode: 0644]
python/ipnb/testSrc/IpnbTestUtil.java [new file with mode: 0644]
python/ipnb/testSrc/JsonParserTest.java

index 382e5b7bf36f12f9d7e14682f76a994ab7330dc7..f70b8677374d3b8751dfb46f3452278a53a8bfb2 100644 (file)
@@ -10,6 +10,7 @@ import com.intellij.openapi.fileEditor.FileEditor;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.plugins.ipnb.editor.IpnbFileEditor;
 import org.jetbrains.plugins.ipnb.editor.panels.IpnbFilePanel;
+import org.jetbrains.plugins.ipnb.format.cells.IpnbCodeCell;
 
 public class IpnbAddCellAboveAction extends AnAction {
 
@@ -28,7 +29,7 @@ public class IpnbAddCellAboveAction extends AnAction {
       public void run() {
         ApplicationManager.getApplication().runWriteAction(new Runnable() {
           public void run() {
-            ipnbFilePanel.createAndAddCell(false);
+            ipnbFilePanel.createAndAddCell(false, IpnbCodeCell.createEmptyCodeCell());
             ipnbFilePanel.saveToFile();
           }
         });
index 0154fec7047e38aa498080a18697c338b55efe8b..09e0a8b2fb88fe80361ebe258e78314dba3b5449 100644 (file)
@@ -10,6 +10,7 @@ import com.intellij.openapi.fileEditor.FileEditor;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.plugins.ipnb.editor.IpnbFileEditor;
 import org.jetbrains.plugins.ipnb.editor.panels.IpnbFilePanel;
+import org.jetbrains.plugins.ipnb.format.cells.IpnbCodeCell;
 
 public class IpnbAddCellBelowAction extends AnAction {
 
@@ -28,7 +29,7 @@ public class IpnbAddCellBelowAction extends AnAction {
       public void run() {
         ApplicationManager.getApplication().runWriteAction(new Runnable() {
           public void run() {
-            ipnbFilePanel.createAndAddCell(true);
+            ipnbFilePanel.createAndAddCell(true, IpnbCodeCell.createEmptyCodeCell());
             ipnbFilePanel.saveToFile();
           }
         });
index 122a4b7fd637587d9d191450729c25fc9d6e525f..53bfdf5c32d85381749a124d1451b42fa26e8ce4 100644 (file)
@@ -11,6 +11,7 @@ import org.jetbrains.annotations.NotNull;
 import org.jetbrains.plugins.ipnb.editor.IpnbFileEditor;
 import org.jetbrains.plugins.ipnb.editor.panels.IpnbEditablePanel;
 import org.jetbrains.plugins.ipnb.editor.panels.IpnbFilePanel;
+import org.jetbrains.plugins.ipnb.format.cells.IpnbCodeCell;
 
 public abstract class IpnbRunCellBaseAction extends AnAction {
   public IpnbRunCellBaseAction() {
@@ -24,7 +25,7 @@ public abstract class IpnbRunCellBaseAction extends AnAction {
     if (selectNext) {
       final int index = ipnbFilePanel.getSelectedIndex();
       if (ipnbFilePanel.getIpnbPanels().size() - 1 == index) {
-        ipnbFilePanel.createAndAddCell(true);
+        ipnbFilePanel.createAndAddCell(true, IpnbCodeCell.createEmptyCodeCell());
         CommandProcessor.getInstance().executeCommand(ipnbFilePanel.getProject(), new Runnable() {
           public void run() {
             ApplicationManager.getApplication().runWriteAction(new Runnable() {
index 6398f8c4806f5e74f04e52ca379a7c66be2c6e7c..d7a06882ad566c263b984391c9cd8b0e0f055c09 100644 (file)
@@ -34,7 +34,6 @@ import org.jetbrains.plugins.ipnb.editor.panels.code.IpnbCodePanel;
 import org.jetbrains.plugins.ipnb.format.IpnbFile;
 import org.jetbrains.plugins.ipnb.format.IpnbParser;
 import org.jetbrains.plugins.ipnb.format.cells.*;
-import org.jetbrains.plugins.ipnb.format.cells.output.IpnbOutputCell;
 
 import javax.swing.*;
 import java.awt.*;
@@ -42,8 +41,6 @@ import java.awt.event.KeyEvent;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 
 public class IpnbFilePanel extends JPanel implements Scrollable, DataProvider, Disposable {
@@ -114,7 +111,7 @@ public class IpnbFilePanel extends JPanel implements Scrollable, DataProvider, D
           public void run() {
             ApplicationManager.getApplication().runWriteAction(new Runnable() {
               public void run() {
-                createAndAddCell(true);
+                createAndAddCell(true, IpnbCodeCell.createEmptyCodeCell());
                 saveToFile();
               }
             });
@@ -210,9 +207,7 @@ public class IpnbFilePanel extends JPanel implements Scrollable, DataProvider, D
     }
   }
 
-  public void createAndAddCell(final boolean below) {
-    final IpnbCodeCell cell = new IpnbCodeCell("python", Collections.emptyList(), null, new ArrayList<>(),
-                                               null);
+  public void createAndAddCell(final boolean below, IpnbCodeCell cell) {
     final IpnbCodePanel codePanel = new IpnbCodePanel(myProject, myParent, cell);
 
     addCell(codePanel, below);
index f18487c2a821f0c9fd3c57b1b370b71f7adddbc3..2c709b33ac95c7de02c9d1d76250005ace42a1e9 100644 (file)
@@ -5,6 +5,7 @@ import org.jetbrains.annotations.Nullable;
 import org.jetbrains.plugins.ipnb.format.cells.output.IpnbOutputCell;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
@@ -57,4 +58,10 @@ public class IpnbCodeCell extends IpnbEditableCell {
     return new IpnbCodeCell(myLanguage, new ArrayList<>(getSource()), myPromptNumber, new ArrayList<>(myCellOutputs),
                             myMetadata);
   }
+  
+  @NotNull
+  public static IpnbCodeCell createEmptyCodeCell() {
+    return new IpnbCodeCell("python", Collections.emptyList(), null, new ArrayList<>(),
+                            Collections.emptyMap());
+  }
 }
diff --git a/python/ipnb/testData/emptyFile.ipynb b/python/ipnb/testData/emptyFile.ipynb
new file mode 100644 (file)
index 0000000..55c1752
--- /dev/null
@@ -0,0 +1,36 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "collapsed": true
+   },
+   "outputs": [],
+   "source": [
+    ""
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 2",
+   "language": "python",
+   "name": "python2"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 2.0
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython2",
+   "version": "2.7.6"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
\ No newline at end of file
diff --git a/python/ipnb/testSrc/CellOperationTest.java b/python/ipnb/testSrc/CellOperationTest.java
new file mode 100644 (file)
index 0000000..b36f395
--- /dev/null
@@ -0,0 +1,34 @@
+import com.intellij.testFramework.LightVirtualFile;
+import junit.framework.TestCase;
+import org.jetbrains.plugins.ipnb.format.IpnbFile;
+import org.jetbrains.plugins.ipnb.format.IpnbParser;
+import org.jetbrains.plugins.ipnb.format.cells.IpnbCodeCell;
+
+import java.io.IOException;
+
+
+public class CellOperationTest extends TestCase {
+  
+  public void testAddCell() throws IOException {
+    final String fileName = "testData/emptyFile.ipynb";
+    final String fileText = IpnbTestUtil.getFileText(fileName);
+
+    final IpnbFile ipnbFile = IpnbParser.parseIpnbFile(fileText, new LightVirtualFile());
+    ipnbFile.addCell(IpnbCodeCell.createEmptyCodeCell(), ipnbFile.getCells().size());
+    final IpnbCodeCell cell = (IpnbCodeCell)ipnbFile.getCells().get(ipnbFile.getCells().size() - 1);
+    assertTrue(cell.getCellOutputs().isEmpty());
+    assertNull(cell.getPromptNumber());
+    assertTrue(cell.getMetadata().isEmpty());
+  }
+  
+  public void testRemoveCell() throws IOException {
+    final String fileName = "testData/emptyFile.ipynb";
+    final String fileText = IpnbTestUtil.getFileText(fileName);
+
+    final IpnbFile ipnbFile = IpnbParser.parseIpnbFile(fileText, new LightVirtualFile());
+    ipnbFile.addCell(IpnbCodeCell.createEmptyCodeCell(), ipnbFile.getCells().size());
+    ipnbFile.removeCell(ipnbFile.getCells().size() - 1);
+    
+    assertEquals(fileText, IpnbTestUtil.getFileText(fileName));
+  }
+}
diff --git a/python/ipnb/testSrc/IpnbTestUtil.java b/python/ipnb/testSrc/IpnbTestUtil.java
new file mode 100644 (file)
index 0000000..afa891e
--- /dev/null
@@ -0,0 +1,27 @@
+import com.intellij.openapi.application.PathManager;
+import org.jetbrains.annotations.NotNull;
+
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.IOException;
+
+public class IpnbTestUtil {
+  static String getFileText(@NotNull final String fileName) throws IOException {
+    String fullPath = PathManager.getHomePath() + "/community/python/ipnb/" + fileName;
+    final BufferedReader br = new BufferedReader(new FileReader(fullPath));
+    try {
+      final StringBuilder sb = new StringBuilder();
+      String line = br.readLine();
+
+      while (line != null) {
+        sb.append(line);
+        sb.append("\n");
+        line = br.readLine();
+      }
+      return sb.toString();
+    }
+    finally {
+      br.close();
+    }
+  }
+}
index d4db2ab50d020a853108574e3769a170ccbcaa8f..4be097c53a82e1e00e0b543f132c19a58631ffb0 100644 (file)
@@ -1,10 +1,8 @@
 import com.google.common.base.Predicate;
 import com.google.common.collect.Iterables;
-import com.intellij.openapi.application.PathManager;
 import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.testFramework.LightVirtualFile;
 import junit.framework.TestCase;
-import org.jetbrains.annotations.NotNull;
 import org.jetbrains.plugins.ipnb.format.IpnbFile;
 import org.jetbrains.plugins.ipnb.format.IpnbParser;
 import org.jetbrains.plugins.ipnb.format.cells.IpnbCell;
@@ -12,15 +10,13 @@ import org.jetbrains.plugins.ipnb.format.cells.IpnbCodeCell;
 import org.jetbrains.plugins.ipnb.format.cells.IpnbMarkdownCell;
 import org.jetbrains.plugins.ipnb.format.cells.output.IpnbOutputCell;
 
-import java.io.BufferedReader;
-import java.io.FileReader;
 import java.io.IOException;
 import java.util.List;
 
 public class JsonParserTest extends TestCase {
   public void testFile() throws IOException {
     final String fileName = "testData/SymPy.ipynb";
-    final String fileText = getFileText(fileName);
+    final String fileText = IpnbTestUtil.getFileText(fileName);
 
     final IpnbFile ipnbFile = IpnbParser.parseIpnbFile(fileText, new LightVirtualFile());
     assertNotNull(ipnbFile);
@@ -29,7 +25,7 @@ public class JsonParserTest extends TestCase {
 
   public void testMarkdownCells() throws IOException {
     final String fileName = "testData/SymPy.ipynb";
-    final String fileText = getFileText(fileName);
+    final String fileText = IpnbTestUtil.getFileText(fileName);
     final IpnbFile ipnbFile = IpnbParser.parseIpnbFile(fileText, new LightVirtualFile());
     assertNotNull(ipnbFile);
     final List<IpnbCell> cells = ipnbFile.getCells();
@@ -44,7 +40,7 @@ public class JsonParserTest extends TestCase {
 
   public void testMarkdownCell() throws IOException {
     final String fileName = "testData/markdown.ipynb";
-    final String fileText = getFileText(fileName);
+    final String fileText = IpnbTestUtil.getFileText(fileName);
     final IpnbFile ipnbFile = IpnbParser.parseIpnbFile(fileText, new LightVirtualFile());
     assertNotNull(ipnbFile);
     final List<IpnbCell> cells = ipnbFile.getCells();
@@ -58,7 +54,7 @@ public class JsonParserTest extends TestCase {
 
   public void testCodeCell() throws IOException {
     final String fileName = "testData/code.ipynb";
-    final String fileText = getFileText(fileName);
+    final String fileText = IpnbTestUtil.getFileText(fileName);
     final IpnbFile ipnbFile = IpnbParser.parseIpnbFile(fileText, new LightVirtualFile());
     assertNotNull(ipnbFile);
     final List<IpnbCell> cells = ipnbFile.getCells();
@@ -78,7 +74,7 @@ public class JsonParserTest extends TestCase {
 
   public void testOutputs() throws IOException {
     final String fileName = "testData/outputs.ipynb";
-    final String fileText = getFileText(fileName);
+    final String fileText = IpnbTestUtil.getFileText(fileName);
     final IpnbFile ipnbFile = IpnbParser.parseIpnbFile(fileText, new LightVirtualFile());
     assertNotNull(ipnbFile);
     final List<IpnbCell> cells = ipnbFile.getCells();
@@ -93,23 +89,4 @@ public class JsonParserTest extends TestCase {
     final String joined = StringUtil.join(text, "");
     assertEquals("\"Add(Symbol('x'), Mul(Integer(2), Symbol('y')))\"", joined);
   }
-
-  private static String getFileText(@NotNull final String fileName) throws IOException {
-    String fullPath = PathManager.getHomePath() + "/community/python/ipnb/" + fileName;
-    final BufferedReader br = new BufferedReader(new FileReader(fullPath));
-    try {
-      final StringBuilder sb = new StringBuilder();
-      String line = br.readLine();
-
-      while (line != null) {
-        sb.append(line);
-        sb.append("\n");
-        line = br.readLine();
-      }
-      return sb.toString();
-    }
-    finally {
-      br.close();
-    }
-  }
 }