def testSetFlushConsole(self):
        flush = {'count': 0}
        def f():
            flush['count'] = flush['count'] + 1

        rinterface.set_flushconsole(f)
        self.assertEquals(rinterface.get_flushconsole(), f)
        rinterface.baseenv.get("flush.console")()
        self.assertEquals(1, flush['count'])
        rinterface.set_writeconsole(rinterface.consoleFlush)
    def testSetWriteConsole(self):
        buf = []
        def f(x):
            buf.append(x)

        rinterface.set_writeconsole(f)
        self.assertEquals(rinterface.get_writeconsole(), f)
        code = rinterface.SexpVector(["3", ], rinterface.STRSXP)
        rinterface.baseenv["print"](code)
        self.assertEquals('[1] "3"\n', str.join('', buf))
    def testWriteConsoleWithError(self):
        def f(x):
            raise CustomException("Doesn't work.")
        rinterface.set_writeconsole(f)

        tmp_file = tempfile.NamedTemporaryFile()
        stderr = sys.stderr
        sys.stderr = tmp_file
        try:
            code = rinterface.SexpVector(["3", ], rinterface.STRSXP)
            rinterface.baseenv["print"](code)
        except Exception, e:
            sys.stderr = stderr
            raise e
    def testChooseFileWithError(self):
        def noconsole(x):
            pass
        rinterface.set_writeconsole(noconsole) # reverted by the tearDown method
        def f(prompt):
            raise Exception("Doesn't work.")
        rinterface.set_choosefile(f)

        tmp_file = tempfile.NamedTemporaryFile()
        stderr = sys.stderr
        sys.stderr = tmp_file
        try:
            res = rinterface.baseenv["file.choose"]()
        except rinterface.RRuntimeError, rre:
            pass
 def setUp(self):
     self.console = rinterface.get_writeconsole()
     def noconsole(x):
         pass
     rinterface.set_writeconsole(noconsole)
 def tearDown(self):
     rinterface.set_writeconsole(self.console)
 def tearDown(self):
     rinterface.set_writeconsole(rinterface.consolePrint)
     rinterface.set_readconsole(rinterface.consoleRead)
     rinterface.set_readconsole(rinterface.consoleFlush)
     rinterface.set_choosefile(rinterface.chooseFile)