21 |
from gzz.errors import * |
from gzz.errors import * |
22 |
import unittest |
import unittest |
23 |
from java import io |
from java import io |
|
|
|
|
class TestRWStringContent(unittest.TestCase): |
|
|
# Requires attributes: |
|
|
# space = the space |
|
|
# cells = sequence of cells |
|
|
|
|
|
# XXX Test observers! |
|
|
# XXX Test IndexOutOfBounds! |
|
|
|
|
|
def testSetGet(self): |
|
|
cells = self.cells |
|
|
cells[0].setText("Foo") |
|
|
cells[1].setText("Bar") |
|
|
self.failUnlessEqual(cells[0].t(), "Foo") |
|
|
self.failUnlessEqual(cells[1].t(), "Bar") |
|
|
|
|
|
def testInsertDelete(self): |
|
|
cells = self.cells |
|
|
def assEq(a, b): |
|
|
self.failUnlessEqual(a, b) |
|
|
cells[0].setText("ABCDEFGH") |
|
|
cells[0].insertText(1, "FOO") |
|
|
assEq(cells[0].t(), "AFOOBCDEFGH") |
|
|
|
|
|
cells[1].insertText(0, "FOO") |
|
|
assEq(cells[1].t(), "FOO") |
|
|
|
|
|
cells[2].setText("01234") |
|
|
cells[2].deleteText(1,3) |
|
|
assEq(cells[2].t(), "034") |
|
|
|
|
|
def testCopyMove(self): |
|
|
cells = self.cells |
|
|
def assEq(a, b): |
|
|
self.failUnlessEqual(a, b) |
|
|
cells[0].setText("0123456789") |
|
|
cells[1].moveText(0, cells[0], 1, 3) |
|
|
|
|
|
assEq(cells[0].t(), "03456789") |
|
|
assEq(cells[1].t(), "12") |
|
|
|
|
|
cells[1].copyText(1, cells[0], 6, 7) |
|
|
assEq(cells[0].t(), "03456789") |
|
|
assEq(cells[1].t(), "182") |
|
|
|
|
|
def testClone(self): |
|
|
c = self.cells[0] |
|
|
c.setText("foo") |
|
|
|
|
|
d = c.zzclone() |
|
|
assert c.t() == d.t() == "foo" |
|
|
|
|
|
c.setText("bar") |
|
|
assert c.t() == d.t() == "bar" |
|
|
|
|
|
d.setText("baz") |
|
|
assert c.t() == d.t() == "baz" |
|
|
|
|
|
def testDelete(self): |
|
|
"""Delete must remove contents""" |
|
|
c = self.cells[0] |
|
|
c.setText("foo") |
|
|
c.delete() |
|
|
assert not c.t() |
|
|
|
|
|
|
|
|
class TestRWSpanContent(TestRWStringContent): |
|
|
def testEmptyEnfilade(self): |
|
|
c = self.cells |
|
|
t = c[0].space.getCellTexter(); |
|
|
e = t.getEnfilade(c[0], None) |
|
|
assert e != None |
|
|
assert e.makeString() == '' |
|
|
assert c[0].t() == '' |
|
|
|
|
|
class TestRWSpanDeltaContent(TestRWSpanContent): |
|
|
def test_SDC_delta_ops(self): |
|
|
c = self.cells |
|
|
|
|
|
def a(ind, text): |
|
|
self.failUnlessEqual(c[ind].t(), text) |
|
|
|
|
|
c[0].setText("ABCDE") |
|
|
c[1].setText("12345") |
|
|
|
|
|
self.space.checkpointDelta() |
|
|
|
|
|
c[0].insertText(1, "2") |
|
|
c[1].deleteText(1, 2) |
|
|
|
|
|
a(0, "A2BCDE") |
|
|
a(1, "1345") |
|
|
|
|
|
delt = self.space.checkpointDelta() |
|
|
|
|
|
self.space.applyDelta(delt.inverse()) |
|
|
|
|
|
a(0, "ABCDE") |
|
|
a(1, "12345") |
|
|
|
|
|
self.space.applyDelta(delt) |
|
|
|
|
|
a(0, "A2BCDE") |
|
|
a(1, "1345") |
|
|
|
|
|
try: self.space.applyDelta(delt) |
|
|
except InconsistentChangeException: pass |
|
|
else: self.fail("No exception") |
|
|
|
|
|
#self.failUnlessRaises(InconsistentChangeException, |
|
|
# self.space.applyDelta, delt) |
|