#!/usr/bin/env python

"""An example for GtkTestCase."""

import unittest
import gtk.gdk
from guitest.gtktest import GtkTestCase, guistate
from guitest.utils import mainloop_handler

import gtk_sample # app being tested


class TestExample(GtkTestCase):

    #@mainloop_handler(gtk_sample.main)
    def test_simple(self):
        assert gtk_sample.app
    test_simple = mainloop_handler(gtk_sample.main)(test_simple)

    def test_complex(self):
        app = gtk_sample.ExampleApp()
        assert app.win.get_border_width() == 12
        assert app.box.get_spacing() == 12
        assert app.label.get_parent() is app.box
        assert app.button.get_parent() is app.box
        assert app.label.get_label() == '#'
        for x in range(1, 10):
            app.button.clicked()
            assert app.num == x
            assert app.label.get_label() == str(x)

    def test_quit(self):
        app = gtk_sample.ExampleApp()
        assert guistate.level == 0
        app.win.emit('delete-event', gtk.gdk.Event(gtk.gdk.DELETE))
        assert guistate.level == -1


def test_suite():
    suite = unittest.TestSuite()
    suite.addTest(unittest.makeSuite(TestExample))
    return suite


if __name__ == '__main__':
    unittest.main()
