Fix fugafuga
This commit is contained in:
@@ -204,6 +204,64 @@ unittest
|
|||||||
assert(slot.get() == "A\n");
|
assert(slot.get() == "A\n");
|
||||||
assert(slot.get() == "");
|
assert(slot.get() == "");
|
||||||
|
|
||||||
|
slot.delete_(-1);
|
||||||
|
slot.set("1");
|
||||||
|
slot.set("2");
|
||||||
|
slot.set("3");
|
||||||
|
slot.set("4");
|
||||||
|
slot.set("5");
|
||||||
|
slot.set("6");
|
||||||
|
slot.set("7");
|
||||||
|
slot.currentLine = 1;
|
||||||
|
slot.currentLine = 1;
|
||||||
|
slot.get();
|
||||||
|
slot.insert("A", false);
|
||||||
|
slot.get();
|
||||||
|
slot.get();
|
||||||
|
slot.insert("B", true);
|
||||||
|
assert(slot.get() == "4\n");
|
||||||
|
assert(slot.get() == "5\n");
|
||||||
|
slot.insert("C", false);
|
||||||
|
slot.get();
|
||||||
|
slot.currentLine = 1;
|
||||||
|
slot.currentLine = 1;
|
||||||
|
assert(slot.get() == "A\n");
|
||||||
|
assert(slot.get() == "1\n");
|
||||||
|
assert(slot.get() == "2\n");
|
||||||
|
assert(slot.get() == "3\n");
|
||||||
|
assert(slot.get() == "B\n");
|
||||||
|
assert(slot.get() == "4\n");
|
||||||
|
assert(slot.get() == "C\n");
|
||||||
|
assert(slot.get() == "5\n");
|
||||||
|
assert(slot.get() == "6\n");
|
||||||
|
assert(slot.get() == "7\n");
|
||||||
|
assert(slot.get() == "\n");
|
||||||
|
assert(slot.get() == "");
|
||||||
|
assert(slot.get() == "");
|
||||||
|
assert(slot.get() == "");
|
||||||
|
assert(slot.get() == "");
|
||||||
|
slot.insert("D", true);
|
||||||
|
slot.insert("E", false);
|
||||||
|
slot.insert("F", false);
|
||||||
|
slot.insert("G", false);
|
||||||
|
slot.currentLine = 1;
|
||||||
|
assert(slot.get() == "A\n");
|
||||||
|
assert(slot.get() == "1\n");
|
||||||
|
assert(slot.get() == "2\n");
|
||||||
|
assert(slot.get() == "3\n");
|
||||||
|
assert(slot.get() == "B\n");
|
||||||
|
assert(slot.get() == "4\n");
|
||||||
|
assert(slot.get() == "C\n");
|
||||||
|
assert(slot.get() == "5\n");
|
||||||
|
assert(slot.get() == "6\n");
|
||||||
|
assert(slot.get() == "7\n");
|
||||||
|
assert(slot.get() == "\n");
|
||||||
|
assert(slot.get() == "E\n");
|
||||||
|
assert(slot.get() == "F\n");
|
||||||
|
assert(slot.get() == "G\n");
|
||||||
|
assert(slot.get() == "D\n");
|
||||||
|
assert(slot.get() == "");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
enum SizeType
|
enum SizeType
|
||||||
@@ -282,11 +340,12 @@ struct Slot
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
range2 = range.save;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
range = program[];
|
range = program[];
|
||||||
range2 = range.save;
|
|
||||||
range.popFrontN(line - 1);
|
range.popFrontN(line - 1);
|
||||||
|
range2 = range.save;
|
||||||
}
|
}
|
||||||
wstring get()
|
wstring get()
|
||||||
{
|
{
|
||||||
@@ -346,6 +405,7 @@ struct Slot
|
|||||||
if (isBack)
|
if (isBack)
|
||||||
{
|
{
|
||||||
backup = range.save;
|
backup = range.save;
|
||||||
|
range = range2;
|
||||||
range.popFront();
|
range.popFront();
|
||||||
}
|
}
|
||||||
foreach(l; splitter(line, "\n"))
|
foreach(l; splitter(line, "\n"))
|
||||||
@@ -353,26 +413,55 @@ struct Slot
|
|||||||
if (isBack)
|
if (isBack)
|
||||||
{
|
{
|
||||||
//backup = range.save;
|
//backup = range.save;
|
||||||
|
if (range.empty)
|
||||||
|
{
|
||||||
|
program.insertBack(l ~ "\n");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
program.insertBefore(range, l ~ "\n");
|
program.insertBefore(range, l ~ "\n");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
program.insertBefore(range, l ~ "\n");
|
if (range2.empty)
|
||||||
|
{
|
||||||
|
program.insertBack(l ~ "\n");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
program.insertBefore(range2, l ~ "\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isBack)
|
if (isBack)
|
||||||
{
|
{
|
||||||
|
if (range.empty)
|
||||||
|
{
|
||||||
|
currentLine = -1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
range = backup;
|
range = backup;
|
||||||
range.popFront();
|
if (range == range2)
|
||||||
|
{
|
||||||
|
range.popFront();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!range.empty)
|
||||||
|
{
|
||||||
|
range2 = range.save;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
range2 = range.save;
|
if (!range.empty)
|
||||||
|
range2 = range.save;
|
||||||
}
|
}
|
||||||
void delete_(int count)
|
void delete_(int count)
|
||||||
{
|
{
|
||||||
if (count < 0)
|
if (count < 0)
|
||||||
{
|
{
|
||||||
init();
|
init();
|
||||||
|
range2 = range.save;
|
||||||
range.popFront();
|
range.popFront();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user