from buffer import Buffer
from point import Point

def p(x, y):
    return Point(x, y)

def setup():
    global b
    b = Buffer()
    b.set_lines(['one two three', 'four five'])

def fail(f):
    def new():
        try:
            f()
        except:
            return
        raise Exception("code did not raise an error")
    # set __name__ to accomodate nose's test detection
    new.__name__ = f.__name__
    return new

def test1(): assert b.make_string() == 'one two three\nfour five'
def test2(): assert b.get_substring(p(0, 0), p(4, 0)) == 'one '
def test3(): assert b.get_substring(p(0, 0), p(13, 0)) == 'one two three'

@fail
def test4(): b.get_substring(p(0, 0), p(14, 0))

def test5(): assert b.get_substring(p(0, 0), p(0, 1)) == 'one two three\n'
def test6(): assert b.get_substring(p(0, 1), p(9, 1)) == 'four five'

@fail
def test7(): b.get_substring(p(0, 1), p(10, 1))

@fail
def test8(): b.get_substring(p(0, 2), p(1, 2))