1
0

Fix fugafuga

This commit is contained in:
otya128
2016-12-28 22:46:28 +09:00
parent 8d96698310
commit 834480e9ac

View File

@@ -204,6 +204,64 @@ unittest
assert(slot.get() == "A\n");
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
@@ -282,11 +340,12 @@ struct Slot
break;
}
}
range2 = range.save;
return;
}
range = program[];
range2 = range.save;
range.popFrontN(line - 1);
range2 = range.save;
}
wstring get()
{
@@ -346,6 +405,7 @@ struct Slot
if (isBack)
{
backup = range.save;
range = range2;
range.popFront();
}
foreach(l; splitter(line, "\n"))
@@ -353,26 +413,55 @@ struct Slot
if (isBack)
{
//backup = range.save;
if (range.empty)
{
program.insertBack(l ~ "\n");
continue;
}
program.insertBefore(range, l ~ "\n");
}
else
{
program.insertBefore(range, l ~ "\n");
if (range2.empty)
{
program.insertBack(l ~ "\n");
continue;
}
program.insertBefore(range2, l ~ "\n");
}
}
if (isBack)
{
if (range.empty)
{
currentLine = -1;
return;
}
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)
{
if (count < 0)
{
init();
range2 = range.save;
range.popFront();
return;
}
else
{