mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-19 13:02:30 +07:00
fix migration from pycharm 3 to pycharm 4
This commit is contained in:
committed by
Ekaterina Tuzova
parent
1dc0eaf7df
commit
6f92410b5f
@@ -262,14 +262,17 @@ public class StudySerializationUtils {
|
||||
final Element adaptive = getChildWithName(courseElement, ADAPTIVE);
|
||||
for (Element lesson : getChildList(courseElement, LESSONS)) {
|
||||
for (Element task : getChildList(lesson, TASK_LIST)) {
|
||||
final Element lastSubtaskIndex = getChildWithName(task, LAST_SUBTASK_INDEX);
|
||||
final Element theoryTask = getChildWithName(task, THEORY_TAG);
|
||||
final Element adaptiveParams = getChildWithName(task, ADAPTIVE_TASK_PARAMETERS);
|
||||
final boolean hasAdaptiveParams = !adaptiveParams.getChildren().isEmpty();
|
||||
if (Integer.valueOf(lastSubtaskIndex.getAttributeValue(VALUE)) != 0) {
|
||||
final Element lastSubtaskIndex = getChildWithName(task, LAST_SUBTASK_INDEX, true); //could be broken by 3->4 migration
|
||||
final Element adaptiveParams = getChildWithName(task, ADAPTIVE_TASK_PARAMETERS, true);
|
||||
Element theoryTask = getChildWithName(task, THEORY_TAG, true);
|
||||
if (theoryTask == null && adaptiveParams != null) {
|
||||
theoryTask = getChildWithName(adaptiveParams, THEORY_TAG, true);
|
||||
}
|
||||
final boolean hasAdaptiveParams = adaptiveParams != null && !adaptiveParams.getChildren().isEmpty();
|
||||
if (lastSubtaskIndex != null && Integer.valueOf(lastSubtaskIndex.getAttributeValue(VALUE)) != 0) {
|
||||
task.setName(TASK_WITH_SUBTASKS);
|
||||
}
|
||||
else if (Boolean.valueOf(theoryTask.getAttributeValue(VALUE))) {
|
||||
else if (theoryTask != null && Boolean.valueOf(theoryTask.getAttributeValue(VALUE))) {
|
||||
task.setName(THEORY_TASK);
|
||||
}
|
||||
else if (hasAdaptiveParams) {
|
||||
@@ -525,9 +528,9 @@ public class StudySerializationUtils {
|
||||
stepOptionsJson = convertToSecondVersion(stepOptionsJson);
|
||||
case 2:
|
||||
stepOptionsJson = convertToThirdVersion(stepOptionsJson);
|
||||
// uncomment for future versions
|
||||
//case 3:
|
||||
// stepOptionsJson = convertToFourthVersion(stepOptionsJson);
|
||||
// uncomment for future versions
|
||||
//case 3:
|
||||
// stepOptionsJson = convertToFourthVersion(stepOptionsJson);
|
||||
}
|
||||
convertSubtaskInfosToMap(stepOptionsJson);
|
||||
StepicWrappers.StepOptions stepOptions =
|
||||
|
||||
@@ -1,110 +0,0 @@
|
||||
<component name="StudySettings">
|
||||
<StudyTaskManager>
|
||||
<option name="course">
|
||||
<Course>
|
||||
<option name="adaptive" value="false"/>
|
||||
<option name="authors">
|
||||
<list>
|
||||
<StepicUser>
|
||||
<option name="email" value=""/>
|
||||
<option name="firstName" value=""/>
|
||||
<option name="id" value="-1"/>
|
||||
<option name="lastName" value=""/>
|
||||
</StepicUser>
|
||||
</list>
|
||||
</option>
|
||||
<option name="courseDirectory" value="$APPLICATION_CONFIG_DIR$/courses/Introduction to Python"/>
|
||||
<option name="courseMode" value="Study"/>
|
||||
<option name="courseType" value="PyCharm"/>
|
||||
<option name="description" value="Introduction course to Python"/>
|
||||
<option name="id" value="238"/>
|
||||
<option name="language" value="Python"/>
|
||||
<option name="lessons">
|
||||
<list>
|
||||
<Lesson>
|
||||
<option name="id" value="13416"/>
|
||||
<option name="index" value="1"/>
|
||||
<option name="name" value="Introduction"/>
|
||||
<option name="updateDate"/>
|
||||
<option name="taskList">
|
||||
<list>
|
||||
<Task>
|
||||
<option name="index" value="1"/>
|
||||
<option name="name" value="Our first program"/>
|
||||
<option name="status" value="Solved"/>
|
||||
<option name="stepicId" value="98626"/>
|
||||
<option name="text"/>
|
||||
<option name="updateDate"/>
|
||||
<option name="taskFiles">
|
||||
<map>
|
||||
<entry key="hello_world.py">
|
||||
<value>
|
||||
<TaskFile>
|
||||
<option name="answerPlaceholders">
|
||||
<list>
|
||||
<AnswerPlaceholder>
|
||||
<option name="additionalHints">
|
||||
<list>
|
||||
<option value="hint 2"/>
|
||||
</list>
|
||||
</option>
|
||||
<option name="hint" value="hint 1"/>
|
||||
<option name="index" value="0"/>
|
||||
<option name="initialState">
|
||||
<MyInitialState>
|
||||
<option name="length" value="14"/>
|
||||
<option name="offset" value="32"/>
|
||||
</MyInitialState>
|
||||
</option>
|
||||
<option name="length" value="5"/>
|
||||
<option name="offset" value="32"/>
|
||||
<option name="possibleAnswer" value="Liana"/>
|
||||
<option name="selected" value="false"/>
|
||||
<option name="status" value="Solved"/>
|
||||
<option name="taskText" value="test text"/>
|
||||
<option name="useLength" value="true"/>
|
||||
</AnswerPlaceholder>
|
||||
</list>
|
||||
</option>
|
||||
<option name="highlightErrors" value="true"/>
|
||||
<option name="index" value="0"/>
|
||||
<option name="trackChanges" value="true"/>
|
||||
<option name="userCreated" value="false"/>
|
||||
<option name="name" value="hello_world.py"/>
|
||||
<option name="text" value="print("Hello, world! My name is type your name") "/>
|
||||
</TaskFile>
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
</Task>
|
||||
</list>
|
||||
</option>
|
||||
</Lesson>
|
||||
</list>
|
||||
</option>
|
||||
<option name="name" value="Introduction to Python"/>
|
||||
<option name="updateDate"/>
|
||||
</Course>
|
||||
</option>
|
||||
<option name="enableTestingFromSamples" value="true"/>
|
||||
<option name="toolWindowMode" value="TEXT"/>
|
||||
<option name="turnEditingMode" value="false"/>
|
||||
<option name="user">
|
||||
<StepicUser>
|
||||
<option name="email" value=""/>
|
||||
<option name="firstName" value=""/>
|
||||
<option name="id" value="-1"/>
|
||||
<option name="lastName" value=""/>
|
||||
</StepicUser>
|
||||
</option>
|
||||
<option name="VERSION" value="3"/>
|
||||
<option name="myUserTests">
|
||||
<map/>
|
||||
</option>
|
||||
<option name="myInvisibleFiles">
|
||||
<list/>
|
||||
</option>
|
||||
<option name="myShouldUseJavaFx" value="true"/>
|
||||
</StudyTaskManager>
|
||||
</component>
|
||||
@@ -1,131 +0,0 @@
|
||||
<component name="StudySettings">
|
||||
<StudyTaskManager>
|
||||
<option name="course">
|
||||
<Course>
|
||||
<option name="adaptive" value="false"/>
|
||||
<option name="authors">
|
||||
<list>
|
||||
<StepicUser>
|
||||
<option name="email" value=""/>
|
||||
<option name="firstName" value=""/>
|
||||
<option name="id" value="-1"/>
|
||||
<option name="lastName" value=""/>
|
||||
</StepicUser>
|
||||
</list>
|
||||
</option>
|
||||
<option name="courseDirectory" value="$APPLICATION_CONFIG_DIR$/courses/Introduction to Python"/>
|
||||
<option name="courseMode" value="Study"/>
|
||||
<option name="courseType" value="PyCharm"/>
|
||||
<option name="description" value="Introduction course to Python"/>
|
||||
<option name="id" value="238"/>
|
||||
<option name="language" value="Python"/>
|
||||
<option name="lessons">
|
||||
<list>
|
||||
<Lesson>
|
||||
<option name="id" value="13416"/>
|
||||
<option name="index" value="1"/>
|
||||
<option name="name" value="Introduction"/>
|
||||
<option name="updateDate"/>
|
||||
<option name="taskList">
|
||||
<list>
|
||||
<Task>
|
||||
<option name="index" value="1"/>
|
||||
<option name="name" value="Our first program"/>
|
||||
<option name="status" value="Solved"/>
|
||||
<option name="stepicId" value="98626"/>
|
||||
<option name="text"/>
|
||||
<option name="updateDate"/>
|
||||
<option name="taskFiles">
|
||||
<map>
|
||||
<entry key="hello_world.py">
|
||||
<value>
|
||||
<TaskFile>
|
||||
<option name="answerPlaceholders">
|
||||
<list>
|
||||
<AnswerPlaceholder>
|
||||
<option name="additionalHints">
|
||||
<list>
|
||||
<option value="hint 2"/>
|
||||
</list>
|
||||
</option>
|
||||
<option name="hint" value="hint 1"/>
|
||||
<option name="index" value="0"/>
|
||||
<option name="initialState">
|
||||
<MyInitialState>
|
||||
<option name="length" value="14"/>
|
||||
<option name="offset" value="32"/>
|
||||
</MyInitialState>
|
||||
</option>
|
||||
<option name="length" value="5"/>
|
||||
<option name="offset" value="32"/>
|
||||
<option name="possibleAnswer" value="Liana"/>
|
||||
<option name="selected" value="false"/>
|
||||
<option name="status" value="Solved"/>
|
||||
<option name="taskText" value="test text"/>
|
||||
<option name="useLength" value="true"/>
|
||||
<option name="subtaskInfos">
|
||||
<map>
|
||||
<entry key="0">
|
||||
<value>
|
||||
<AnswerPlaceholderSubtaskInfo>
|
||||
<option name="hint" value="hint 1"/>
|
||||
<option name="possibleAnswer" value="Liana"/>
|
||||
<option name="selected" value="false"/>
|
||||
<option name="status" value="Solved"/>
|
||||
<option name="placeholderText" value="test text"/>
|
||||
<option name="hints">
|
||||
<list>
|
||||
<option value="hint 1"/>
|
||||
<option value="hint 2"/>
|
||||
</list>
|
||||
</option>
|
||||
</AnswerPlaceholderSubtaskInfo>
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
</AnswerPlaceholder>
|
||||
</list>
|
||||
</option>
|
||||
<option name="highlightErrors" value="true"/>
|
||||
<option name="index" value="0"/>
|
||||
<option name="trackChanges" value="true"/>
|
||||
<option name="userCreated" value="false"/>
|
||||
<option name="name" value="hello_world.py"/>
|
||||
<option name="text" value="print("Hello, world! My name is type your name") "/>
|
||||
</TaskFile>
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
</Task>
|
||||
</list>
|
||||
</option>
|
||||
</Lesson>
|
||||
</list>
|
||||
</option>
|
||||
<option name="name" value="Introduction to Python"/>
|
||||
<option name="updateDate"/>
|
||||
</Course>
|
||||
</option>
|
||||
<option name="enableTestingFromSamples" value="true"/>
|
||||
<option name="toolWindowMode" value="TEXT"/>
|
||||
<option name="turnEditingMode" value="false"/>
|
||||
<option name="user">
|
||||
<StepicUser>
|
||||
<option name="email" value=""/>
|
||||
<option name="firstName" value=""/>
|
||||
<option name="id" value="-1"/>
|
||||
<option name="lastName" value=""/>
|
||||
</StepicUser>
|
||||
</option>
|
||||
<option name="VERSION" value="3"/>
|
||||
<option name="myUserTests">
|
||||
<map/>
|
||||
</option>
|
||||
<option name="myInvisibleFiles">
|
||||
<list/>
|
||||
</option>
|
||||
<option name="myShouldUseJavaFx" value="true"/>
|
||||
</StudyTaskManager>
|
||||
</component>
|
||||
@@ -1,175 +0,0 @@
|
||||
<component name="StudySettings">
|
||||
<StudyTaskManager>
|
||||
<option name="course">
|
||||
<Course>
|
||||
<option name="adaptive" value="true" />
|
||||
<option name="authors">
|
||||
<list>
|
||||
<StepicUser>
|
||||
<option name="accessToken" />
|
||||
<option name="email" value="" />
|
||||
<option name="firstName" value="" />
|
||||
<option name="id" value="-1" />
|
||||
<option name="lastName" value="" />
|
||||
<option name="refreshToken" />
|
||||
</StepicUser>
|
||||
</list>
|
||||
</option>
|
||||
<option name="courseDirectory" value="$APPLICATION_CONFIG_DIR$/courses/__AdaptivePyCharmPython__test_adaptive_PyCharm_course_2_tuzova.k@gmail.com" />
|
||||
<option name="courseMode" value="Study" />
|
||||
<option name="courseType" value="PyCharm" />
|
||||
<option name="description" value="This is a Stepik Adaptive course. Choice-test Initially, the adaptive system may behave somewhat randomly, but the more problems you solve, the smarter it become!" />
|
||||
<option name="id" value="1730" />
|
||||
<option name="language" value="Python" />
|
||||
<option name="lessons">
|
||||
<list>
|
||||
<Lesson>
|
||||
<option name="id" value="35738" />
|
||||
<option name="index" value="1" />
|
||||
<option name="name" value="Adaptive" />
|
||||
<option name="updateDate" />
|
||||
<option name="taskList">
|
||||
<list>
|
||||
<Task>
|
||||
<option name="activeSubtaskIndex" value="0" />
|
||||
<option name="adaptiveTaskParameters" />
|
||||
<option name="index" value="1" />
|
||||
<option name="lastSubtaskIndex" value="0" />
|
||||
<option name="name" value="Hello world!" />
|
||||
<option name="status" value="Solved" />
|
||||
<option name="stepId" value="98994" />
|
||||
<option name="text" />
|
||||
<option name="theoryTask" value="false" />
|
||||
<option name="updateDate" />
|
||||
<option name="taskFiles">
|
||||
<map>
|
||||
<entry key="code.py">
|
||||
<value>
|
||||
<TaskFile>
|
||||
<option name="answerPlaceholders">
|
||||
<list />
|
||||
</option>
|
||||
<option name="highlightErrors" value="true" />
|
||||
<option name="index" value="0" />
|
||||
<option name="trackChanges" value="true" />
|
||||
<option name="trackLengths" value="true" />
|
||||
<option name="userCreated" value="false" />
|
||||
<option name="name" value="code" />
|
||||
<option name="text" value="# put your python code here" />
|
||||
</TaskFile>
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
</Task>
|
||||
<Task>
|
||||
<option name="activeSubtaskIndex" value="0" />
|
||||
<option name="adaptiveTaskParameters">
|
||||
<AdaptiveTaskParameters>
|
||||
<option name="choiceVariants">
|
||||
<list />
|
||||
</option>
|
||||
<option name="multipleChoice" value="false" />
|
||||
<option name="selectedVariants">
|
||||
<list />
|
||||
</option>
|
||||
<option name="theoryTask" value="true" />
|
||||
</AdaptiveTaskParameters>
|
||||
</option>
|
||||
<option name="index" value="2" />
|
||||
<option name="lastSubtaskIndex" value="0" />
|
||||
<option name="name" value="Theory. Input/output" />
|
||||
<option name="status" value="Solved" />
|
||||
<option name="stepId" value="131457" />
|
||||
<option name="text" />
|
||||
<option name="theoryTask" value="true" />
|
||||
<option name="updateDate" />
|
||||
<option name="taskFiles">
|
||||
<map>
|
||||
<entry key="code.py">
|
||||
<value>
|
||||
<TaskFile>
|
||||
<option name="answerPlaceholders">
|
||||
<list />
|
||||
</option>
|
||||
<option name="highlightErrors" value="false" />
|
||||
<option name="index" value="0" />
|
||||
<option name="trackChanges" value="true" />
|
||||
<option name="trackLengths" value="true" />
|
||||
<option name="userCreated" value="false" />
|
||||
<option name="name" value="code" />
|
||||
<option name="text" value="# you can experiment here, it won't be checked" />
|
||||
</TaskFile>
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
</Task>
|
||||
<Task>
|
||||
<option name="activeSubtaskIndex" value="0" />
|
||||
<option name="adaptiveTaskParameters">
|
||||
<AdaptiveTaskParameters>
|
||||
<option name="choiceVariants">
|
||||
<list>
|
||||
<option value="(2, 1)" />
|
||||
<option value="It causes TypeError: f() got an unexpected keyword argument" />
|
||||
<option value="(1, 2)" />
|
||||
</list>
|
||||
</option>
|
||||
<option name="multipleChoice" value="false" />
|
||||
<option name="selectedVariants">
|
||||
<list />
|
||||
</option>
|
||||
<option name="theoryTask" value="false" />
|
||||
</AdaptiveTaskParameters>
|
||||
</option>
|
||||
<option name="index" value="3" />
|
||||
<option name="lastSubtaskIndex" value="0" />
|
||||
<option name="name" value="Small question about functions" />
|
||||
<option name="status" value="Unchecked" />
|
||||
<option name="stepId" value="145807" />
|
||||
<option name="text" value="What does this function return?<div><br><div><pre><pre><code>def f(a,b):<br> return a,b<br><br>f(**{'b':2,'a':1})</code></pre></pre></div></div>" />
|
||||
<option name="theoryTask" value="false" />
|
||||
<option name="updateDate" />
|
||||
<option name="taskFiles">
|
||||
<map>
|
||||
<entry key="code.py">
|
||||
<value>
|
||||
<TaskFile>
|
||||
<option name="answerPlaceholders">
|
||||
<list />
|
||||
</option>
|
||||
<option name="highlightErrors" value="false" />
|
||||
<option name="index" value="0" />
|
||||
<option name="trackChanges" value="true" />
|
||||
<option name="trackLengths" value="true" />
|
||||
<option name="userCreated" value="false" />
|
||||
<option name="name" value="code" />
|
||||
<option name="text" value="# you can experiment here, it won't be checked" />
|
||||
</TaskFile>
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
</Task>
|
||||
</list>
|
||||
</option>
|
||||
</Lesson>
|
||||
</list>
|
||||
</option>
|
||||
<option name="name" value="test_adaptive_PyCharm_course_2" />
|
||||
<option name="updateDate" />
|
||||
</Course>
|
||||
</option>
|
||||
<option name="toolWindowMode" value="TEXT" />
|
||||
<option name="turnEditingMode" value="false" />
|
||||
<option name="VERSION" value="4" />
|
||||
<option name="myUserTests">
|
||||
<map />
|
||||
</option>
|
||||
<option name="myInvisibleFiles">
|
||||
<list />
|
||||
</option>
|
||||
<option name="myShouldUseJavaFx" value="true" />
|
||||
</StudyTaskManager>
|
||||
</component>
|
||||
@@ -1,154 +0,0 @@
|
||||
<component name="StudySettings">
|
||||
<StudyTaskManager>
|
||||
<option name="course">
|
||||
<Course>
|
||||
<option name="adaptive" value="true" />
|
||||
<option name="authors">
|
||||
<list>
|
||||
<StepicUser>
|
||||
<option name="accessToken" />
|
||||
<option name="email" value="" />
|
||||
<option name="firstName" value="" />
|
||||
<option name="id" value="-1" />
|
||||
<option name="lastName" value="" />
|
||||
<option name="refreshToken" />
|
||||
</StepicUser>
|
||||
</list>
|
||||
</option>
|
||||
<option name="courseDirectory" value="$APPLICATION_CONFIG_DIR$/courses/__AdaptivePyCharmPython__test_adaptive_PyCharm_course_2_tuzova.k@gmail.com" />
|
||||
<option name="courseMode" value="Study" />
|
||||
<option name="courseType" value="PyCharm" />
|
||||
<option name="description" value="This is a Stepik Adaptive course. Choice-test Initially, the adaptive system may behave somewhat randomly, but the more problems you solve, the smarter it become!" />
|
||||
<option name="id" value="1730" />
|
||||
<option name="language" value="Python" />
|
||||
<option name="lessons">
|
||||
<list>
|
||||
<Lesson>
|
||||
<option name="id" value="35738" />
|
||||
<option name="index" value="1" />
|
||||
<option name="name" value="Adaptive" />
|
||||
<option name="updateDate" />
|
||||
<option name="taskList">
|
||||
<list>
|
||||
<CodeTask>
|
||||
<option name="activeSubtaskIndex" value="0" />
|
||||
<option name="index" value="1" />
|
||||
<option name="lastSubtaskIndex" value="0" />
|
||||
<option name="name" value="Hello world!" />
|
||||
<option name="status" value="Solved" />
|
||||
<option name="stepId" value="98994" />
|
||||
<option name="text" />
|
||||
<option name="updateDate" />
|
||||
<option name="taskFiles">
|
||||
<map>
|
||||
<entry key="code.py">
|
||||
<value>
|
||||
<TaskFile>
|
||||
<option name="answerPlaceholders">
|
||||
<list />
|
||||
</option>
|
||||
<option name="highlightErrors" value="true" />
|
||||
<option name="index" value="0" />
|
||||
<option name="trackChanges" value="true" />
|
||||
<option name="trackLengths" value="true" />
|
||||
<option name="userCreated" value="false" />
|
||||
<option name="name" value="code" />
|
||||
<option name="text" value="# put your python code here" />
|
||||
</TaskFile>
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
</CodeTask>
|
||||
<TheoryTask>
|
||||
<option name="activeSubtaskIndex" value="0" />
|
||||
<option name="index" value="2" />
|
||||
<option name="lastSubtaskIndex" value="0" />
|
||||
<option name="name" value="Theory. Input/output" />
|
||||
<option name="status" value="Solved" />
|
||||
<option name="stepId" value="131457" />
|
||||
<option name="text" />
|
||||
<option name="updateDate" />
|
||||
<option name="taskFiles">
|
||||
<map>
|
||||
<entry key="code.py">
|
||||
<value>
|
||||
<TaskFile>
|
||||
<option name="answerPlaceholders">
|
||||
<list />
|
||||
</option>
|
||||
<option name="highlightErrors" value="false" />
|
||||
<option name="index" value="0" />
|
||||
<option name="trackChanges" value="true" />
|
||||
<option name="trackLengths" value="true" />
|
||||
<option name="userCreated" value="false" />
|
||||
<option name="name" value="code" />
|
||||
<option name="text" value="# you can experiment here, it won't be checked" />
|
||||
</TaskFile>
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
</TheoryTask>
|
||||
<ChoiceTask>
|
||||
<option name="activeSubtaskIndex" value="0" />
|
||||
<option name="index" value="3" />
|
||||
<option name="lastSubtaskIndex" value="0" />
|
||||
<option name="name" value="Small question about functions" />
|
||||
<option name="status" value="Unchecked" />
|
||||
<option name="stepId" value="145807" />
|
||||
<option name="text" value="What does this function return?<div><br><div><pre><pre><code>def f(a,b):<br> return a,b<br><br>f(**{'b':2,'a':1})</code></pre></pre></div></div>" />
|
||||
<option name="updateDate" />
|
||||
<option name="taskFiles">
|
||||
<map>
|
||||
<entry key="code.py">
|
||||
<value>
|
||||
<TaskFile>
|
||||
<option name="answerPlaceholders">
|
||||
<list />
|
||||
</option>
|
||||
<option name="highlightErrors" value="false" />
|
||||
<option name="index" value="0" />
|
||||
<option name="trackChanges" value="true" />
|
||||
<option name="trackLengths" value="true" />
|
||||
<option name="userCreated" value="false" />
|
||||
<option name="name" value="code" />
|
||||
<option name="text" value="# you can experiment here, it won't be checked" />
|
||||
</TaskFile>
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
<option name="choiceVariants">
|
||||
<list>
|
||||
<option value="(2, 1)" />
|
||||
<option value="It causes TypeError: f() got an unexpected keyword argument" />
|
||||
<option value="(1, 2)" />
|
||||
</list>
|
||||
</option>
|
||||
<option name="multipleChoice" value="false" />
|
||||
<option name="selectedVariants">
|
||||
<list />
|
||||
</option>
|
||||
</ChoiceTask>
|
||||
</list>
|
||||
</option>
|
||||
</Lesson>
|
||||
</list>
|
||||
</option>
|
||||
<option name="name" value="test_adaptive_PyCharm_course_2" />
|
||||
<option name="updateDate" />
|
||||
</Course>
|
||||
</option>
|
||||
<option name="toolWindowMode" value="TEXT" />
|
||||
<option name="turnEditingMode" value="false" />
|
||||
<option name="VERSION" value="4" />
|
||||
<option name="myUserTests">
|
||||
<map />
|
||||
</option>
|
||||
<option name="myInvisibleFiles">
|
||||
<list />
|
||||
</option>
|
||||
<option name="myShouldUseJavaFx" value="true" />
|
||||
</StudyTaskManager>
|
||||
</component>
|
||||
@@ -1,158 +0,0 @@
|
||||
<component name="StudySettings">
|
||||
<StudyTaskManager>
|
||||
<option name="course">
|
||||
<Course>
|
||||
<option name="adaptive" value="false" />
|
||||
<option name="authors">
|
||||
<list>
|
||||
<StepicUser>
|
||||
<option name="accessToken" />
|
||||
<option name="email" value="" />
|
||||
<option name="firstName" value="ktisha" />
|
||||
<option name="id" value="-1" />
|
||||
<option name="lastName" value="" />
|
||||
<option name="refreshToken" />
|
||||
</StepicUser>
|
||||
</list>
|
||||
</option>
|
||||
<option name="courseDirectory" value="$APPLICATION_CONFIG_DIR$/courses/1234-untitled" />
|
||||
<option name="courseMode" value="Course Creator" />
|
||||
<option name="courseType" value="PyCharm" />
|
||||
<option name="description" value="qwer" />
|
||||
<option name="id" value="0" />
|
||||
<option name="language" value="Python" />
|
||||
<option name="lessons">
|
||||
<list>
|
||||
<Lesson>
|
||||
<option name="id" value="0" />
|
||||
<option name="index" value="1" />
|
||||
<option name="name" value="lesson1" />
|
||||
<option name="updateDate" />
|
||||
<option name="taskList">
|
||||
<list>
|
||||
<Task>
|
||||
<option name="activeSubtaskIndex" value="1" />
|
||||
<option name="adaptiveTaskParameters">
|
||||
<AdaptiveTaskParameters>
|
||||
<option name="choiceVariants">
|
||||
<list />
|
||||
</option>
|
||||
<option name="multipleChoice" value="false" />
|
||||
<option name="selectedVariants">
|
||||
<list />
|
||||
</option>
|
||||
<option name="theoryTask" value="false" />
|
||||
</AdaptiveTaskParameters>
|
||||
</option>
|
||||
<option name="index" value="1" />
|
||||
<option name="lastSubtaskIndex" value="1" />
|
||||
<option name="name" value="task1" />
|
||||
<option name="status" value="Unchecked" />
|
||||
<option name="stepId" value="0" />
|
||||
<option name="text" />
|
||||
<option name="theoryTask" value="false" />
|
||||
<option name="updateDate" />
|
||||
<option name="taskFiles">
|
||||
<map>
|
||||
<entry key="task.py">
|
||||
<value>
|
||||
<TaskFile>
|
||||
<option name="answerPlaceholders">
|
||||
<list>
|
||||
<AnswerPlaceholder>
|
||||
<option name="index" value="0" />
|
||||
<option name="initialState" />
|
||||
<option name="length" value="3" />
|
||||
<option name="offset" value="7" />
|
||||
<option name="selected" value="false" />
|
||||
<option name="subtaskInfos">
|
||||
<map>
|
||||
<entry key="0">
|
||||
<value>
|
||||
<AnswerPlaceholderSubtaskInfo>
|
||||
<option name="answer" value="" />
|
||||
<option name="hasFrame" value="true" />
|
||||
<option name="hints">
|
||||
<list>
|
||||
<option value="hint1" />
|
||||
</list>
|
||||
</option>
|
||||
<option name="needInsertText" value="false" />
|
||||
<option name="placeholderText" value="123" />
|
||||
<option name="possibleAnswer" value=" type" />
|
||||
<option name="selected" value="false" />
|
||||
<option name="status" value="Unchecked" />
|
||||
</AnswerPlaceholderSubtaskInfo>
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
<option name="useLength" value="false" />
|
||||
</AnswerPlaceholder>
|
||||
<AnswerPlaceholder>
|
||||
<option name="index" value="1" />
|
||||
<option name="initialState" />
|
||||
<option name="length" value="4" />
|
||||
<option name="offset" value="22" />
|
||||
<option name="selected" value="false" />
|
||||
<option name="subtaskInfos">
|
||||
<map>
|
||||
<entry key="1">
|
||||
<value>
|
||||
<AnswerPlaceholderSubtaskInfo>
|
||||
<option name="answer" value="" />
|
||||
<option name="hasFrame" value="true" />
|
||||
<option name="hints">
|
||||
<list>
|
||||
<option value="hint2" />
|
||||
</list>
|
||||
</option>
|
||||
<option name="needInsertText" value="false" />
|
||||
<option name="placeholderText" value="zxcv" />
|
||||
<option name="possibleAnswer" value="here" />
|
||||
<option name="selected" value="false" />
|
||||
<option name="status" value="Unchecked" />
|
||||
</AnswerPlaceholderSubtaskInfo>
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
<option name="useLength" value="false" />
|
||||
</AnswerPlaceholder>
|
||||
</list>
|
||||
</option>
|
||||
<option name="highlightErrors" value="true" />
|
||||
<option name="index" value="1" />
|
||||
<option name="trackChanges" value="true" />
|
||||
<option name="trackLengths" value="true" />
|
||||
<option name="userCreated" value="false" />
|
||||
<option name="name" value="task.py" />
|
||||
<option name="text" />
|
||||
</TaskFile>
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
</Task>
|
||||
</list>
|
||||
</option>
|
||||
</Lesson>
|
||||
</list>
|
||||
</option>
|
||||
<option name="name" value="1234" />
|
||||
<option name="updateDate" />
|
||||
</Course>
|
||||
</option>
|
||||
<option name="enableTestingFromSamples" value="false" />
|
||||
<option name="toolWindowMode" value="TEXT" />
|
||||
<option name="turnEditingMode" value="false" />
|
||||
<option name="VERSION" value="4" />
|
||||
<option name="myUserTests">
|
||||
<map />
|
||||
</option>
|
||||
<option name="myInvisibleFiles">
|
||||
<list />
|
||||
</option>
|
||||
<option name="myShouldUseJavaFx" value="true" />
|
||||
</StudyTaskManager>
|
||||
</component>
|
||||
@@ -1,145 +0,0 @@
|
||||
<component name="StudySettings">
|
||||
<StudyTaskManager>
|
||||
<option name="course">
|
||||
<Course>
|
||||
<option name="adaptive" value="false" />
|
||||
<option name="authors">
|
||||
<list>
|
||||
<StepicUser>
|
||||
<option name="accessToken" />
|
||||
<option name="email" value="" />
|
||||
<option name="firstName" value="ktisha" />
|
||||
<option name="id" value="-1" />
|
||||
<option name="lastName" value="" />
|
||||
<option name="refreshToken" />
|
||||
</StepicUser>
|
||||
</list>
|
||||
</option>
|
||||
<option name="courseDirectory" value="$APPLICATION_CONFIG_DIR$/courses/1234-untitled" />
|
||||
<option name="courseMode" value="Course Creator" />
|
||||
<option name="courseType" value="PyCharm" />
|
||||
<option name="description" value="qwer" />
|
||||
<option name="id" value="0" />
|
||||
<option name="language" value="Python" />
|
||||
<option name="lessons">
|
||||
<list>
|
||||
<Lesson>
|
||||
<option name="id" value="0" />
|
||||
<option name="index" value="1" />
|
||||
<option name="name" value="lesson1" />
|
||||
<option name="updateDate" />
|
||||
<option name="taskList">
|
||||
<list>
|
||||
<TaskWithSubtasks>
|
||||
<option name="activeSubtaskIndex" value="1" />
|
||||
<option name="index" value="1" />
|
||||
<option name="lastSubtaskIndex" value="1" />
|
||||
<option name="name" value="task1" />
|
||||
<option name="status" value="Unchecked" />
|
||||
<option name="stepId" value="0" />
|
||||
<option name="text" />
|
||||
<option name="updateDate" />
|
||||
<option name="taskFiles">
|
||||
<map>
|
||||
<entry key="task.py">
|
||||
<value>
|
||||
<TaskFile>
|
||||
<option name="answerPlaceholders">
|
||||
<list>
|
||||
<AnswerPlaceholder>
|
||||
<option name="index" value="0" />
|
||||
<option name="initialState" />
|
||||
<option name="length" value="3" />
|
||||
<option name="offset" value="7" />
|
||||
<option name="selected" value="false" />
|
||||
<option name="subtaskInfos">
|
||||
<map>
|
||||
<entry key="0">
|
||||
<value>
|
||||
<AnswerPlaceholderSubtaskInfo>
|
||||
<option name="answer" value="" />
|
||||
<option name="hasFrame" value="true" />
|
||||
<option name="hints">
|
||||
<list>
|
||||
<option value="hint1" />
|
||||
</list>
|
||||
</option>
|
||||
<option name="needInsertText" value="false" />
|
||||
<option name="placeholderText" value="123" />
|
||||
<option name="possibleAnswer" value=" type" />
|
||||
<option name="selected" value="false" />
|
||||
<option name="status" value="Unchecked" />
|
||||
</AnswerPlaceholderSubtaskInfo>
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
<option name="useLength" value="false" />
|
||||
</AnswerPlaceholder>
|
||||
<AnswerPlaceholder>
|
||||
<option name="index" value="1" />
|
||||
<option name="initialState" />
|
||||
<option name="length" value="4" />
|
||||
<option name="offset" value="22" />
|
||||
<option name="selected" value="false" />
|
||||
<option name="subtaskInfos">
|
||||
<map>
|
||||
<entry key="1">
|
||||
<value>
|
||||
<AnswerPlaceholderSubtaskInfo>
|
||||
<option name="answer" value="" />
|
||||
<option name="hasFrame" value="true" />
|
||||
<option name="hints">
|
||||
<list>
|
||||
<option value="hint2" />
|
||||
</list>
|
||||
</option>
|
||||
<option name="needInsertText" value="false" />
|
||||
<option name="placeholderText" value="zxcv" />
|
||||
<option name="possibleAnswer" value="here" />
|
||||
<option name="selected" value="false" />
|
||||
<option name="status" value="Unchecked" />
|
||||
</AnswerPlaceholderSubtaskInfo>
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
<option name="useLength" value="false" />
|
||||
</AnswerPlaceholder>
|
||||
</list>
|
||||
</option>
|
||||
<option name="highlightErrors" value="true" />
|
||||
<option name="index" value="1" />
|
||||
<option name="trackChanges" value="true" />
|
||||
<option name="trackLengths" value="true" />
|
||||
<option name="userCreated" value="false" />
|
||||
<option name="name" value="task.py" />
|
||||
<option name="text" />
|
||||
</TaskFile>
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
</TaskWithSubtasks>
|
||||
</list>
|
||||
</option>
|
||||
</Lesson>
|
||||
</list>
|
||||
</option>
|
||||
<option name="name" value="1234" />
|
||||
<option name="updateDate" />
|
||||
</Course>
|
||||
</option>
|
||||
<option name="enableTestingFromSamples" value="false" />
|
||||
<option name="toolWindowMode" value="TEXT" />
|
||||
<option name="turnEditingMode" value="false" />
|
||||
<option name="VERSION" value="4" />
|
||||
<option name="myUserTests">
|
||||
<map />
|
||||
</option>
|
||||
<option name="myInvisibleFiles">
|
||||
<list />
|
||||
</option>
|
||||
<option name="myShouldUseJavaFx" value="true" />
|
||||
</StudyTaskManager>
|
||||
</component>
|
||||
@@ -5,7 +5,9 @@ import com.intellij.util.JdomKt;
|
||||
import org.jdom.Element;
|
||||
import org.jdom.JDOMException;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.TestName;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Path;
|
||||
@@ -14,22 +16,51 @@ import java.nio.file.Paths;
|
||||
import static com.intellij.testFramework.assertions.Assertions.assertThat;
|
||||
|
||||
public class StudyMigrationTest {
|
||||
@Rule public TestName name = new TestName();
|
||||
|
||||
@Test
|
||||
public void testFromThirdToForth() throws JDOMException, IOException, StudySerializationUtils.StudyUnrecognizedFormatException {
|
||||
Element element = JdomKt.loadElement(getTestDataPath().resolve("3.xml"));
|
||||
assertThat(StudySerializationUtils.Xml.convertToForthVersion(element)).isEqualTo(getTestDataPath().resolve("4.xml"));
|
||||
doTest(3);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAdaptive45() throws JDOMException, IOException, StudySerializationUtils.StudyUnrecognizedFormatException {
|
||||
Element element = JdomKt.loadElement(getTestDataPath().resolve("adaptive4.xml"));
|
||||
assertThat(StudySerializationUtils.Xml.convertToFifthVersion(element)).isEqualTo(getTestDataPath().resolve("adaptive5.xml"));
|
||||
doTest(4);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSubtasks45() throws JDOMException, IOException, StudySerializationUtils.StudyUnrecognizedFormatException {
|
||||
Element element = JdomKt.loadElement(getTestDataPath().resolve("subtasks4.xml"));
|
||||
assertThat(StudySerializationUtils.Xml.convertToFifthVersion(element)).isEqualTo(getTestDataPath().resolve("subtasks5.xml"));
|
||||
doTest(4);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTheory35To4() throws JDOMException, IOException, StudySerializationUtils.StudyUnrecognizedFormatException {
|
||||
doTest(4);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTheory351To4() throws JDOMException, IOException, StudySerializationUtils.StudyUnrecognizedFormatException {
|
||||
doTest(4);
|
||||
}
|
||||
|
||||
private void doTest(int version) throws IOException, JDOMException, StudySerializationUtils.StudyUnrecognizedFormatException {
|
||||
final String name = PlatformTestUtil.getTestName(this.name.getMethodName(), true);
|
||||
final Path before = getTestDataPath().resolve(name + ".xml");
|
||||
final Path after = getTestDataPath().resolve(name + ".after.xml");
|
||||
Element element = JdomKt.loadElement(before);
|
||||
Element converted = element;
|
||||
switch (version) {
|
||||
case 1:
|
||||
converted = StudySerializationUtils.Xml.convertToSecondVersion(element);
|
||||
break;
|
||||
case 3:
|
||||
converted = StudySerializationUtils.Xml.convertToForthVersion(element);
|
||||
break;
|
||||
case 4:
|
||||
converted = StudySerializationUtils.Xml.convertToFifthVersion(element);
|
||||
break;
|
||||
}
|
||||
assertThat(converted).isEqualTo(after);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
Reference in New Issue
Block a user