Refactored test code a lot. Introduced KotlinLibTest.

This commit is contained in:
Pavel Talanov
2011-11-16 17:12:16 +04:00
parent dcb7b3264c
commit 8f99212d9e
10 changed files with 315 additions and 427 deletions
+191 -393
View File
@@ -6,15 +6,15 @@
</component>
<component name="ChangeListManager">
<list default="true" id="f02ef53d-47a4-4f5e-a1aa-3df68aae9b20" name="Default" comment="">
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/testFiles/trait/cases/traitExtendsTrait.kt" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/KotlinLibTest.java" />
<change type="DELETED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\testFiles\trait\cases\traitCompiles.kt" afterPath="" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/RhinoFunctionResultChecker.java" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/RhinoResultChecker.java" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/RhinoUtils.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/testFiles/kotlin_lib.js" afterPath="$PROJECT_DIR$/translator/testFiles/kotlin_lib.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/AbstractClassTest.java" afterPath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/AbstractClassTest.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/BasicClassTest.java" afterPath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/BasicClassTest.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ClassInheritanceTest.java" afterPath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ClassInheritanceTest.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ExpressionTest.java" afterPath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ExpressionTest.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/TraitTest.java" afterPath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/TraitTest.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/KotlinLibTest.java" afterPath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/KotlinLibTest.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/PropertyAccessorTest.java" afterPath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/PropertyAccessorTest.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/TranslationTest.java" afterPath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/TranslationTest.java" />
</list>
<ignored path="k2js.iws" />
@@ -66,7 +66,7 @@
<option name="CONDITION" value="" />
<option name="LOG_MESSAGE" value="" />
</breakpoint>
<breakpoint url="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/AbstractClassTest.java" line="16" class="org.jetbrains.k2js.test.AbstractClassTest" package="org.jetbrains.k2js.test">
<breakpoint url="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/AbstractClassTest.java" line="10" class="org.jetbrains.k2js.test.AbstractClassTest" package="org.jetbrains.k2js.test">
<option name="ENABLED" value="true" />
<option name="LOG_ENABLED" value="false" />
<option name="LOG_EXPRESSION_ENABLED" value="false" />
@@ -119,13 +119,13 @@
<favorites_list name="k2js" />
</component>
<component name="FileEditorManager">
<splitter split-orientation="horizontal" split-proportion="0.55857146">
<splitter split-orientation="horizontal" split-proportion="0.7392857">
<split-first>
<leaf>
<file leaf-file-name="KotlinLibTest.java" pinned="false" current="false" current-in-tab="false">
<file leaf-file-name="KotlinLibTest.java" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/KotlinLibTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="18" column="48" selection-start="460" selection-end="460" vertical-scroll-proportion="0.0">
<state line="33" column="78" selection-start="872" selection-end="872" vertical-scroll-proportion="-0.10526316">
<folding>
<element signature="imports" expanded="true" />
</folding>
@@ -133,7 +133,65 @@
</provider>
</entry>
</file>
<file leaf-file-name="ExpressionVisitor.java" pinned="false" current="true" current-in-tab="true">
<file leaf-file-name="RhinoResultChecker.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/RhinoResultChecker.java">
<provider selected="true" editor-type-id="text-editor">
<state line="9" column="77" selection-start="264" selection-end="264" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="RhinoFunctionResultChecker.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/RhinoFunctionResultChecker.java">
<provider selected="true" editor-type-id="text-editor">
<state line="29" column="35" selection-start="1106" selection-end="1106" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ReflectiveCallable.class" pinned="false" current="false" current-in-tab="false">
<entry file="jar://$PROJECT_DIR$/translator/lib/junit-4.10.jar!/org/junit/internal/runners/model/ReflectiveCallable.class">
<provider selected="true" editor-type-id="text-editor">
<state line="11" column="40" selection-start="397" selection-end="397" vertical-scroll-proportion="-6.8">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ParentRunner.class" pinned="false" current="false" current-in-tab="false">
<entry file="jar://$PROJECT_DIR$/translator/lib/junit-4.10.jar!/org/junit/runners/ParentRunner.class">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="-0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="BlockJUnit4ClassRunner.class" pinned="false" current="false" current-in-tab="false">
<entry file="jar://$PROJECT_DIR$/translator/lib/junit-4.10.jar!/org/junit/runners/BlockJUnit4ClassRunner.class">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="-0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Function.class" pinned="false" current="false" current-in-tab="false">
<entry file="jar://$PROJECT_DIR$/translator/lib/js.jar!/org/mozilla/javascript/Function.class">
<provider selected="true" editor-type-id="text-editor">
<state line="5" column="63" selection-start="210" selection-end="210" vertical-scroll-proportion="-2.72">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ExpressionVisitor.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ExpressionVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
@@ -142,76 +200,22 @@
</provider>
</entry>
</file>
<file leaf-file-name="BasicClassTest.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/BasicClassTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="17" column="0" selection-start="359" selection-end="359" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="AbstractClassTest.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/AbstractClassTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="16" column="0" selection-start="336" selection-end="485" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ExpressionTest.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ExpressionTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="23" column="29" selection-start="603" selection-end="603" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ClassInheritanceTest.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ClassInheritanceTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="9" column="0" selection-start="160" selection-end="295" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="TranslationTest.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/TranslationTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="61" column="39" selection-start="1906" selection-end="1906" vertical-scroll-proportion="0.0">
<state line="78" column="23" selection-start="2502" selection-end="2502" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="complexExpressionAsConstructorParameter.js" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/class/out/complexExpressionAsConstructorParameter.js">
<file leaf-file-name="RhinoUtils.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/RhinoUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state line="20" column="0" selection-start="360" selection-end="360" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="constructorWithParameter.js" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/class/out/constructorWithParameter.js">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="kotlin_lib.js" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/kotlin_lib.js">
<provider selected="true" editor-type-id="text-editor">
<state line="90" column="2" selection-start="0" selection-end="9776" vertical-scroll-proportion="0.0">
<folding />
<state line="17" column="64" selection-start="369" selection-end="369" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
@@ -247,19 +251,19 @@
</provider>
</entry>
</file>
<file leaf-file-name="TraitTest.java" pinned="false" current="false" current-in-tab="false">
<file leaf-file-name="TraitTest.java" pinned="false" current="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/TraitTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="7" column="19" selection-start="110" selection-end="110" vertical-scroll-proportion="0.0">
<state line="7" column="19" selection-start="110" selection-end="110" vertical-scroll-proportion="0.22326455">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="PropertyAccessorTest.java" pinned="false" current="false" current-in-tab="true">
<file leaf-file-name="PropertyAccessorTest.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/PropertyAccessorTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="7" column="19" selection-start="110" selection-end="110" vertical-scroll-proportion="0.19636963">
<state line="7" column="19" selection-start="110" selection-end="110" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@@ -331,10 +335,6 @@
<component name="IdeDocumentHistory">
<option name="changedFiles">
<list>
<option value="$PROJECT_DIR$/translator/testFiles/trait/cases/traitAddsFunctionsToClass.kt" />
<option value="$PROJECT_DIR$/translator/testFiles/trait/out/traitCompiles.js" />
<option value="$PROJECT_DIR$/translator/testFiles/trait/cases/classDerivesFromTraitAndClass.kt" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/BindingUtils.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ClassTranslator.java" />
<option value="$PROJECT_DIR$/translator/testFiles/trait/out/classDerivesFromTraitAndClass.js" />
<option value="$PROJECT_DIR$/translator/testFiles/trait/cases/example.kt" />
@@ -343,9 +343,13 @@
<option value="$PROJECT_DIR$/translator/testFiles/trait/cases/traitExtendsTrait.kt" />
<option value="$PROJECT_DIR$/translator/testFiles/kotlin_lib.js" />
<option value="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/BasicClassTest.java" />
<option value="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/TranslationTest.java" />
<option value="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/AbstractClassTest.java" />
<option value="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ExpressionTest.java" />
<option value="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/RhinoTester.java" />
<option value="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/RhinoResultChecker.java" />
<option value="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/RhinoUtils.java" />
<option value="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/RhinoFunctionResultChecker.java" />
<option value="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/TranslationTest.java" />
<option value="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/KotlinLibTest.java" />
</list>
</option>
@@ -435,179 +439,7 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="trait" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="k2js" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="translator" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="testFiles" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="propertyAccess" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="out" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="k2js" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="translator" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="testFiles" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="propertyAccess" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="cases" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="k2js" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="translator" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="testFiles" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="inheritance" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="out" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="k2js" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="translator" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="testFiles" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="inheritance" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="cases" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="k2js" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="translator" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="testFiles" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="expression" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="out" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="k2js" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="translator" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="testFiles" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="expression" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="cases" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="k2js" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="translator" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="testFiles" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="class" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="out" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="k2js" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="translator" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="testFiles" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="class" />
<option name="myItemId" value="kotlinLib" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
@@ -647,50 +479,6 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="k2js" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="translator" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="k2js" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="translate" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="k2js" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="translator" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="k2js" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="declarations" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="k2js" />
@@ -783,32 +571,6 @@
</key>
</component>
<component name="RunManager" selected="JUnit.All in translator">
<configuration default="false" name="BasicClassTest.constructorWithParameter" type="JUnit" factoryName="JUnit" temporary="true">
<module name="translator" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" value="" />
<option name="PACKAGE_NAME" value="org.jetbrains.k2js.test" />
<option name="MAIN_CLASS_NAME" value="org.jetbrains.k2js.test.BasicClassTest" />
<option name="METHOD_NAME" value="constructorWithParameter" />
<option name="TEST_OBJECT" value="method" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$/translator" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="moduleWithDependencies" />
</option>
<envs />
<patterns />
<RunnerSettings RunnerId="Debug">
<option name="DEBUG_PORT" value="49537" />
<option name="TRANSPORT" value="0" />
<option name="LOCAL" value="true" />
</RunnerSettings>
<ConfigurationWrapper RunnerId="Debug" />
<method />
</configuration>
<configuration default="false" name="All in translator" type="JUnit" factoryName="JUnit" temporary="true">
<module name="translator" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
@@ -909,6 +671,34 @@
<ConfigurationWrapper RunnerId="Debug" />
<method />
</configuration>
<configuration default="false" name="KotlinLibTest.classObjectHasCreateMethod" type="JUnit" factoryName="JUnit" temporary="true">
<module name="translator" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" value="" />
<option name="PACKAGE_NAME" value="org.jetbrains.k2js.test" />
<option name="MAIN_CLASS_NAME" value="org.jetbrains.k2js.test.KotlinLibTest" />
<option name="METHOD_NAME" value="classObjectHasCreateMethod" />
<option name="TEST_OBJECT" value="method" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$/translator" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="moduleWithDependencies" />
</option>
<envs />
<patterns />
<RunnerSettings RunnerId="Debug">
<option name="DEBUG_PORT" value="50462" />
<option name="TRANSPORT" value="0" />
<option name="LOCAL" value="true" />
</RunnerSettings>
<RunnerSettings RunnerId="Run" />
<ConfigurationWrapper RunnerId="Debug" />
<ConfigurationWrapper RunnerId="Run" />
<method />
</configuration>
<configuration default="true" type="Remote" factoryName="Remote">
<option name="USE_SOCKET_TRANSPORT" value="true" />
<option name="SERVER_MODE" value="false" />
@@ -984,11 +774,11 @@
</method>
</configuration>
<list size="5">
<item index="0" class="java.lang.String" itemvalue="JUnit.BasicClassTest.constructorWithParameter" />
<item index="1" class="java.lang.String" itemvalue="JUnit.All in translator" />
<item index="2" class="java.lang.String" itemvalue="JUnit.ExpressionTest.ifElseIf" />
<item index="3" class="java.lang.String" itemvalue="JUnit.ClassInheritanceTest.initializationOrder" />
<item index="4" class="java.lang.String" itemvalue="JUnit.TraitTest.example" />
<item index="0" class="java.lang.String" itemvalue="JUnit.All in translator" />
<item index="1" class="java.lang.String" itemvalue="JUnit.ExpressionTest.ifElseIf" />
<item index="2" class="java.lang.String" itemvalue="JUnit.ClassInheritanceTest.initializationOrder" />
<item index="3" class="java.lang.String" itemvalue="JUnit.TraitTest.example" />
<item index="4" class="java.lang.String" itemvalue="JUnit.KotlinLibTest.classObjectHasCreateMethod" />
</list>
<configuration name="&lt;template&gt;" type="WebApp" default="true" selected="false">
<Host>localhost</Host>
@@ -1024,7 +814,7 @@
</component>
<component name="ToolWindowManager">
<frame x="-8" y="-8" width="1936" height="1176" extended-state="6" />
<editor active="false" />
<editor active="true" />
<layout>
<window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32907662" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
@@ -1040,7 +830,7 @@
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3997862" sideWeight="0.6705998" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.2513369" sideWeight="0.66570884" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Dependency Viewer" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="11" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.3342912" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.3342912" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="10" side_tool="true" content_ui="tabs" />
@@ -1078,7 +868,7 @@
<option name="CHECK_COMMIT_MESSAGE_SPELLING" value="true" />
<option name="DEFAULT_PATCH_EXTENSION" value="patch" />
<option name="FORCE_NON_EMPTY_COMMENT" value="false" />
<option name="LAST_COMMIT_MESSAGE" value="Added suppoer for null literal and a test for Traits." />
<option name="LAST_COMMIT_MESSAGE" value="Refactored tests a bit. Working on KotlinLibTest" />
<option name="MAKE_NEW_CHANGELIST_ACTIVE" value="true" />
<option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="true" />
<option name="CHECK_FILES_UP_TO_DATE_BEFORE_COMMIT" value="false" />
@@ -1091,7 +881,6 @@
<option name="UPDATE_GROUP_BY_CHANGELIST" value="false" />
<option name="SHOW_FILE_HISTORY_AS_TREE" value="false" />
<option name="FILE_HISTORY_SPLITTER_PROPORTION" value="0.6" />
<MESSAGE value="Added while/do while support" />
<MESSAGE value="Added string constant support." />
<MESSAGE value="Added constructor calls. Working on method logic." />
<MESSAGE value="Added simple method call support." />
@@ -1116,6 +905,7 @@
<MESSAGE value="Added basic trait support. Added a couple of tests." />
<MESSAGE value="Refactored ClassTranslator code a bit. Added support for different order of inherited classes." />
<MESSAGE value="Added suppoer for null literal and a test for Traits." />
<MESSAGE value="Refactored tests a bit. Working on KotlinLibTest" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager />
@@ -1125,86 +915,46 @@
<option name="FILTER_TARGETS" value="false" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/translator/testFiles/trait/out/classDerivesFromClassAndTrait.js">
<entry file="jar://C:/Program Files/Java/jdk1.7.0_01/src.zip!/java/util/Map.java">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
<state line="362" column="14" selection-start="16898" selection-end="16898" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ClassInheritanceTest.java">
<entry file="file://$PROJECT_DIR$/translator/testFiles/kotlin_lib.js">
<provider selected="true" editor-type-id="text-editor">
<state line="9" column="0" selection-start="160" selection-end="295" vertical-scroll-proportion="0.0">
<state line="90" column="2" selection-start="0" selection-end="9776" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/trait/out/classDerivesFromTraitAndClass.js">
<entry file="jar://$PROJECT_DIR$/translator/lib/js.jar!/org/mozilla/javascript/Function.class">
<provider selected="true" editor-type-id="text-editor">
<state line="9" column="33" selection-start="195" selection-end="195" vertical-scroll-proportion="0.0">
<state line="5" column="63" selection-start="210" selection-end="210" vertical-scroll-proportion="-2.72">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/BindingUtils.java">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ExpressionVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="106" column="66" selection-start="5266" selection-end="5266" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/BasicClassTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="17" column="0" selection-start="359" selection-end="359" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/propertyAccess/out/customSetter.js">
<provider selected="true" editor-type-id="text-editor">
<state line="1" column="0" selection-start="10" selection-end="10" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/trait/cases/traitExtendsTrait.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="20" column="39" selection-start="320" selection-end="320" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/TraitTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="7" column="19" selection-start="110" selection-end="110" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/PropertyAccessorTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="7" column="19" selection-start="110" selection-end="110" vertical-scroll-proportion="0.19636963">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/TranslationTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="61" column="39" selection-start="1906" selection-end="1906" vertical-scroll-proportion="0.0">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="-0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/AbstractClassTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="16" column="0" selection-start="336" selection-end="485" vertical-scroll-proportion="0.0">
<folding />
<state line="10" column="0" selection-start="183" selection-end="332" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/trait/cases/example.kt">
<entry file="jar://$PROJECT_DIR$/translator/lib/junit-4.10.jar!/org/junit/internal/runners/model/ReflectiveCallable.class">
<provider selected="true" editor-type-id="text-editor">
<state line="11" column="27" selection-start="176" selection-end="176" vertical-scroll-proportion="0.0">
<state line="11" column="40" selection-start="397" selection-end="397" vertical-scroll-proportion="-6.8">
<folding />
</state>
</provider>
@@ -1218,29 +968,77 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/KotlinLibTest.java">
<entry file="jar://$PROJECT_DIR$/translator/lib/junit-4.10.jar!/org/junit/runners/BlockJUnit4ClassRunner.class">
<provider selected="true" editor-type-id="text-editor">
<state line="18" column="48" selection-start="460" selection-end="460" vertical-scroll-proportion="0.0">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="jar://$PROJECT_DIR$/translator/lib/junit-4.10.jar!/org/junit/runners/ParentRunner.class">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="-0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/RhinoResultChecker.java">
<provider selected="true" editor-type-id="text-editor">
<state line="9" column="77" selection-start="264" selection-end="264" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/trait/out/traitAddsFunctionsToClass.js">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/PropertyAccessorTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="24" column="8" selection-start="463" selection-end="463" vertical-scroll-proportion="0.0">
<state line="7" column="19" selection-start="110" selection-end="110" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ExpressionVisitor.java">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/TraitTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="-0.0">
<state line="7" column="19" selection-start="110" selection-end="110" vertical-scroll-proportion="0.22326455">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/RhinoUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state line="17" column="64" selection-start="369" selection-end="369" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/TranslationTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="78" column="23" selection-start="2502" selection-end="2502" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/RhinoFunctionResultChecker.java">
<provider selected="true" editor-type-id="text-editor">
<state line="29" column="35" selection-start="1106" selection-end="1106" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/KotlinLibTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="33" column="78" selection-start="872" selection-end="872" vertical-scroll-proportion="-0.10526316">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</component>
<component name="masterDetails">
<states>
@@ -32,7 +32,7 @@ public class BasicClassTest extends AbstractClassTest {
@Test
public void incrementProperty() throws Exception {
performTest("incrementProperty.kt", "foo", "box", "OK");
testFunctionOutput("incrementProperty.kt", "foo", "box", "OK");
}
@Test
@@ -16,7 +16,7 @@ public final class ClassInheritanceTest extends AbstractClassTest {
@Test
public void initializersOfBasicClassExecute() throws Exception {
performTest("initializersOfBasicClassExecute.kt", "foo", "box", 3);
testFunctionOutput("initializersOfBasicClassExecute.kt", "foo", "box", 3);
}
@Test
@@ -31,12 +31,12 @@ public final class ExpressionTest extends TranslationTest {
@Test
public void testAssign() throws Exception {
performTest("assign.jet", "foo", "f", 2.0);
testFunctionOutput("assign.jet", "foo", "f", 2.0);
}
@Test
public void namespaceProperties() throws Exception {
performTest("localProperty.jet", "foo", "box", 50);
testFunctionOutput("localProperty.jet", "foo", "box", 50);
}
@Test
@@ -46,12 +46,12 @@ public final class ExpressionTest extends TranslationTest {
@Test
public void ifElse() throws Exception {
performTest("if.kt", "foo", "box", 5);
testFunctionOutput("if.kt", "foo", "box", 5);
}
//TODO: test fails due to isStatement issue, include when issue is solved or implement another solution
// @Test
// public void ifElseIf() throws Exception {
// performTest("elseif.kt", "foo", "box", 5);
// testFunctionOutput("elseif.kt", "foo", "box", 5);
// }
@Test
@@ -2,17 +2,23 @@ package org.jetbrains.k2js.test;
import org.junit.Test;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.Function;
import org.mozilla.javascript.NativeObject;
import org.mozilla.javascript.Scriptable;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static org.junit.Assert.assertTrue;
/**
* @author Talanov Pavel
*/
public class KotlinLibTest extends TranslationTest {
final private static String MAIN = "kotlin_lib/";
final private static String MAIN = "kotlinLib/";
@Override
protected List<String> generateFilenameList(String inputFile) {
@@ -24,6 +30,17 @@ public class KotlinLibTest extends TranslationTest {
return MAIN;
}
protected void verifyObjectHasExpectedPropertiesOfExpectedTypes
(NativeObject object, Map<String, Class<? extends Scriptable>> nameToClassMap) {
for (Map.Entry<String, Class<? extends Scriptable>> entry : nameToClassMap.entrySet()) {
String name = entry.getKey();
Class expectedClass = entry.getValue();
assertTrue(object + " must contain key " + name, object.containsKey(name));
assertTrue(object + "'s property " + name + " must be of type " + expectedClass,
expectedClass.isInstance(object.get(name)));
}
}
@Test
public void kotlinJsLibRunsWithRhino() throws Exception {
Context context = Context.enter();
@@ -32,4 +49,21 @@ public class KotlinLibTest extends TranslationTest {
Context.exit();
}
@Test
public void classObjectHasCreateMethod() throws Exception {
final Map<String, Class<? extends Scriptable>> nameToClassMap =
new HashMap<String, Class<? extends Scriptable>>();
nameToClassMap.put("create", Function.class);
runRhinoTest(Arrays.asList(kotlinLibraryPath()),
new RhinoResultChecker() {
@Override
public void runChecks(Context context, Scriptable scope) throws Exception {
NativeObject object = RhinoUtils.extractObject("Class", scope);
verifyObjectHasExpectedPropertiesOfExpectedTypes(object, nameToClassMap);
}
});
}
}
@@ -26,7 +26,7 @@ public final class PropertyAccessorTest extends AbstractClassTest {
@Test
public void setter() throws Exception {
performTest("setter.kt", "foo", "f", 99.0);
testFunctionOutput("setter.kt", "foo", "f", 99.0);
}
@Test
@@ -0,0 +1,42 @@
package org.jetbrains.k2js.test;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.Function;
import org.mozilla.javascript.NativeObject;
import org.mozilla.javascript.Scriptable;
import static org.junit.Assert.assertTrue;
/**
* @author Talanov Pavel
*/
public final class RhinoFunctionResultChecker implements RhinoResultChecker {
final String namespaceName;
final String functionName;
final Object expectedResult;
public RhinoFunctionResultChecker(String namespaceName, String functionName, Object expectedResult) {
this.namespaceName = namespaceName;
this.functionName = functionName;
this.expectedResult = expectedResult;
}
@Override
public void runChecks(Context context, Scriptable scope) throws Exception {
Object result = extractAndCallFunctionObject(namespaceName, functionName, context, scope);
assertTrue("Result is not what expected!", result.equals(expectedResult));
String report = namespaceName + "." + functionName + "() = " + Context.toString(result);
System.out.println(report);
}
private Object extractAndCallFunctionObject(String namespaceName, String functionName,
Context cx, Scriptable scope) {
NativeObject namespaceObject = RhinoUtils.extractObject(namespaceName, scope);
Object box = namespaceObject.get(functionName, namespaceObject);
assertTrue("Function " + functionName + " not defined in namespace " + namespaceName, box instanceof Function);
Object functionArgs[] = {};
Function function = (Function) box;
return function.call(cx, scope, scope, functionArgs);
}
}
@@ -0,0 +1,11 @@
package org.jetbrains.k2js.test;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.Scriptable;
/**
* @author Talanov Pavel
*/
public interface RhinoResultChecker {
public void runChecks(Context context, Scriptable scope) throws Exception;
}
@@ -0,0 +1,22 @@
package org.jetbrains.k2js.test;
import org.mozilla.javascript.NativeObject;
import org.mozilla.javascript.Scriptable;
import static org.junit.Assert.assertTrue;
/**
* @author Talanov Pavel
*/
public final class RhinoUtils {
private RhinoUtils() {
}
public static NativeObject extractObject(String objectName, Scriptable scope) {
Object nativeObject = scope.get(objectName, scope);
assertTrue(objectName + " should be JSON Object", nativeObject instanceof NativeObject);
return (NativeObject) nativeObject;
}
}
@@ -3,15 +3,11 @@ package org.jetbrains.k2js.test;
import org.jetbrains.k2js.K2JSTranslator;
import org.junit.Before;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.Function;
import org.mozilla.javascript.NativeObject;
import org.mozilla.javascript.Scriptable;
import java.io.FileReader;
import java.util.List;
import static org.junit.Assert.assertTrue;
/**
* @author Talanov Pavel
@@ -48,13 +44,14 @@ public abstract class TranslationTest {
return testFilesDirectory + testCasesDirectory;
}
protected void performTest(String filename, String namespaceName,
String functionName, Object expectedResult) throws Exception {
protected void testFunctionOutput(String filename, String namespaceName,
String functionName, Object expectedResult) throws Exception {
K2JSTranslator.Arguments args = new K2JSTranslator.Arguments();
args.src = getInputFilePath(filename);
args.outputDir = getOutputFilePath(filename);
K2JSTranslator.translate(args);
runWithRhino(generateFilenameList(args.outputDir), namespaceName, functionName, expectedResult);
runRhinoTest(generateFilenameList(args.outputDir),
new RhinoFunctionResultChecker(namespaceName, functionName, expectedResult));
}
abstract protected List<String> generateFilenameList(String inputfile);
@@ -77,33 +74,17 @@ public abstract class TranslationTest {
reader.close();
}
protected void runWithRhino(List<String> filenames, String namespaceName,
String functionName, Object expectedResult) throws Exception {
protected void runRhinoTest(List<String> filenames, RhinoResultChecker checker) throws Exception {
Context cx = Context.enter();
Scriptable scope = cx.initStandardObjects();
for (String filename : filenames) {
runFileWithRhino(filename, cx, scope);
}
Object result = extractAndCallFunctionObject(namespaceName, functionName, cx, scope);
assertTrue("Result is not what expected!", result.equals(expectedResult));
String report = namespaceName + "." + functionName + "() = " + Context.toString(result);
System.out.println(report);
checker.runChecks(cx, scope);
Context.exit();
}
protected Object extractAndCallFunctionObject(String namespaceName, String functionName,
Context cx, Scriptable scope) {
Object foo = scope.get(namespaceName, scope);
assertTrue(foo instanceof NativeObject);
NativeObject namespaceObject = (NativeObject) foo;
Object box = namespaceObject.get(functionName, namespaceObject);
assertTrue("Function " + functionName + " not defined in namespace " + namespaceName, box instanceof Function);
Object functionArgs[] = {};
Function function = (Function) box;
return function.call(cx, scope, scope, functionArgs);
}
protected void testFooBoxIsTrue(String filename) throws Exception {
performTest(filename, "foo", "box", true);
testFunctionOutput(filename, "foo", "box", true);
}
}