Ejemplo n.º 1
0
    def main(self):
        t = document.createElement('table')
        self.resTable = t
        self.resdiv.appendChild(self.resTable)

        headers = ['Result', 'Actual Value', 'Expected Value', 'Notes']
        row = document.createElement('tr')
        for item in headers:
            head = document.createElement('th')
            head.setAttribute('class', 'ac-feedback')
            head.innerHTML = item
            head.setCSS('text-align', 'center')
            row.appendChild(head)
        self.resTable.appendChild(row)

        for func in self.tlist:
            try:
                self.setUp()
                func()
                self.tearDown()
            except Exception as e:
                self.appendResult('Error', None, None,
                                  str(e).split('on line')[0])
                self.numFailed += 1
        self.showSummary()
Ejemplo n.º 2
0
Archivo: gui.py Proyecto: soney/skulpt
    def main(self):
        t = document.createElement("table")
        self.resTable = t
        x = self.resdiv.closest(".timedComponent")
        if x:
            self.is_timed = True
        else:
            self.is_timed = False
        self.resdiv.appendChild(self.resTable)
        if self.is_timed:
            self.resdiv.setCSS('display','none')

        headers = ["Result", "Actual Value", "Expected Value", "Notes"]
        row = document.createElement("tr")
        for item in headers:
            head = document.createElement("th")
            head.setAttribute("class", "ac-feedback")
            head.innerHTML = item
            head.setCSS("text-align", "center")
            row.appendChild(head)
        self.resTable.appendChild(row)

        for func in self.tlist:
            try:
                self.setUp()
                func()
                self.tearDown()
            except Exception as e:
                self.appendResult("Error", None, None, str(e).split("on line")[0])
                self.numFailed += 1
        self.showSummary()
Ejemplo n.º 3
0
    def __init__(self):
        TestCase.__init__(self)
        self.closestDiv = document.currentDiv()
        self.divid = document.currentGradingContainer()
        self.mydiv = document.getElementById(self.divid)
        # If there is no div then create a dummy to avoid errors when running
        # grading "off screen"
        if self.mydiv is None:
            self.mydiv = document.createElement("div")
            self.mydiv.setAttribute("id",
                                    self.divid + "_offscreen_unit_results")
            self.mydiv.setCSS("display", "none")
            body = document.getElementsByTagName("body")[0]
            body.appendChild(self.mydiv)
            self.unit_results_divid = self.divid + "_offscreen_unit_results"

        res = document.getElementById(self.divid + "_unit_results")
        if res:
            self.resdiv = res
            res.innerHTML = ""
            self.unit_results_divid = self.divid + "_unit_results"
        else:
            self.resdiv = document.createElement("div")
            self.resdiv.setAttribute("id", self.divid + "_unit_results")
            self.resdiv.setAttribute("class", "unittest-results")
            self.mydiv.appendChild(self.resdiv)
            self.unit_results_divid = self.divid + "_unit_results"
Ejemplo n.º 4
0
Archivo: gui.py Proyecto: soney/skulpt
    def showSummary(self):
        pct = float(self.numPassed) / (self.numPassed + self.numFailed) * 100
        pTag = document.createElement("p")
        if not self.is_timed:
            pTag.innerHTML = "You passed: " + str(pct) + "% of the tests"
            self.resdiv.appendChild(pTag)
        else:
            # This is a little hacky
            try:
                jseval("window.edList['{}'].pct_correct = {}".format(self.closestDiv, pct))
            except:
                print("failed to find object to record unittest results - they are on the server")

        pctcorrect = (
            "percent:"
            + str(pct)
            + ":passed:"
            + str(self.numPassed)
            + ":failed:"
            + str(self.numFailed)
        )
        course = document.currentCourse()
        urlopen(
            "/runestone/ajax/hsblog",
            "event=unittest&div_id="
            + self.divid
            + "&act="
            + pctcorrect
            + "&course="
            + course,
        )
Ejemplo n.º 5
0
 def showSummary(self):
     pct = float(self.numPassed) / (self.numPassed+self.numFailed) * 100
     pTag = document.createElement('p')
     pTag.innerHTML = "You passed: " + str(pct) + "% of the tests"
     self.resdiv.appendChild(pTag)
     pctcorrect = "percent:" + str(pct) + ":passed:" + str(self.numPassed) + ":failed:" + str(self.numFailed)
     course = document.currentCourse()
     urlopen("/runestone/ajax/hsblog","event=unittest&div_id="+self.divid+"&act="+pctcorrect+"&course="+course)
Ejemplo n.º 6
0
	def showSummary(self):
		pct = self.numPassed / (self.numPassed+self.numFailed) * 100
		pTag = document.createElement('p')
		pTag.innerHTML = "You passed: " + str(pct) + "% of the tests"
		self.resdiv.appendChild(pTag)
		if pct < 90:
			self.resdiv.setCSS('background-color','#de8e96')
		else:
			self.resdiv.setCSS('background-color','#83d382')
Ejemplo n.º 7
0
 def showSummary(self):
     pct = float(self.numPassed) / (self.numPassed + self.numFailed) * 100
     pTag = document.createElement('p')
     pTag.innerHTML = "You passed: " + str(pct) + "% of the tests"
     self.resdiv.appendChild(pTag)
     pctcorrect = "percent:" + str(pct) + ":passed:" + str(
         self.numPassed) + ":failed:" + str(self.numFailed)
     course = document.currentCourse()
     urlopen(
         "/runestone/ajax/hsblog", "event=unittest&div_id=" + self.divid +
         "&act=" + pctcorrect + "&course=" + course)
Ejemplo n.º 8
0
 def create(kwargs):
     if "tag" in kwargs:
         tag = kwargs["tag"]
     else:
         tag = "div"
     elem = document.createElement(tag)
     
     if "html" in kwargs:
         elem.innerHTML = kwargs.pop("html")
         
     for key in kwargs:
         elem.setAttribute(key, kwargs[key])
     return elem
Ejemplo n.º 9
0
 def __init__(self):
     TestCase.__init__(self)
     self.divid = document.currentDiv()
     self.mydiv = document.getElementById(self.divid)
     res = document.getElementById(self.divid + '_unit_results')
     if res:
         self.resdiv = res
         res.innerHTML = ''
     else:
         self.resdiv = document.createElement('div')
         self.resdiv.setAttribute('id', self.divid + '_unit_results')
         self.resdiv.setAttribute('class', 'unittest-results')
         self.mydiv.appendChild(self.resdiv)
Ejemplo n.º 10
0
 def __init__(self):
      TestCase.__init__(self)
      self.divid = document.currentDiv()
      self.mydiv = document.getElementById(self.divid)
      res = document.getElementById(self.divid+'_unit_results')
      if res:
          self.resdiv = res
          res.innerHTML = ''
      else:
          self.resdiv = document.createElement('div')
          self.resdiv.setAttribute('id',self.divid+'_unit_results')
          self.resdiv.setAttribute('class','unittest-results')
          self.mydiv.appendChild(self.resdiv)
Ejemplo n.º 11
0
	def appendResult(self,res,actual,expected,feedback):
		if res == 'Error':
			msg = 'Error: %s' % feedback
		elif res:
			msg = 'Pass'
			self.numPassed += 1
		else:
			msg = 'Fail: expected %s  %s ' % (str(actual),str(expected)) + feedback
			self.numFailed += 1

		pTag = document.createElement('li')
		pTag.innerHTML = msg
		self.resList.appendChild(pTag)
Ejemplo n.º 12
0
Archivo: gui.py Proyecto: soney/skulpt
 def __init__(self):
     TestCase.__init__(self)
     self.closestDiv = document.currentDiv()
     self.divid = document.currentGradingContainer()
     self.mydiv = document.getElementById(self.divid)
     res = document.getElementById(self.divid + "_unit_results")
     if res:
         self.resdiv = res
         res.innerHTML = ""
     else:
         self.resdiv = document.createElement("div")
         self.resdiv.setAttribute("id", self.divid + "_unit_results")
         self.resdiv.setAttribute("class", "unittest-results")
         self.mydiv.appendChild(self.resdiv)
Ejemplo n.º 13
0
	def main(self):
		l = document.createElement('ul')
		self.resdiv.appendChild(l)
		self.resList = l

		for func in self.tlist:
			try:
				self.setup()
				func()
				self.tearDown()
			except Exception as e:
				self.appendResult('Error', None, None, e)
				self.numFailed += 1
		self.showSummary()
Ejemplo n.º 14
0
     def main(self):
         t = document.createElement('table')
         self.resTable = t
         self.resdiv.appendChild(self.resTable)

         headers = ['Result','Actual Value','Expected Value','Notes']
         row = document.createElement('tr')
         for item in headers:
             head = document.createElement('th')
             head.setAttribute('class','ac-feedback')
             head.innerHTML = item
             head.setCSS('text-align','center')
             row.appendChild(head)
         self.resTable.appendChild(row)

         for func in self.tlist:
             try:
                 self.setUp()
                 func()
                 self.tearDown()
             except Exception as e:
                 self.appendResult('Error', None, None, e)
                 self.numFailed += 1
                 self.showSummary()
Ejemplo n.º 15
0
    def showSummary(self):
        pct = float(self.numPassed) / (self.numPassed + self.numFailed) * 100
        pctcorrect = ("percent:" + str(pct) + ":passed:" +
                      str(self.numPassed) + ":failed:" + str(self.numFailed))
        pTag = document.createElement("p")
        if not self.is_timed:
            pTag.innerHTML = "You passed: " + str(pct) + "% of the tests"
            self.resdiv.appendChild(pTag)
        try:
            jseval("window.edList['{}'].pct_correct = {}".format(
                self.closestDiv, pct))
            jseval("window.edList['{}'].unit_results = '{}'".format(
                self.closestDiv, pctcorrect))
            jseval("window.edList['{}'].unit_results_divid = '{}'".format(
                self.closestDiv, self.mydiv.getAttribute("id")))

        except:
            print(
                "failed to find object to record unittest results! {}".format(
                    pctcorrect))
Ejemplo n.º 16
0
    def __init__(self):
        self.numPassed = 0
        self.numFailed = 0
        self.divid = document.currentDiv()
        self.mydiv = document.getElementById(self.divid)
        res = document.getElementById(self.divid+'_unit_results')
        if res:
            self.resdiv = res
            res.innerHTML = ''
        else:
            self.resdiv = document.createElement('div')
            self.resdiv.setAttribute('id',self.divid+'_unit_results')
            self.resdiv.setAttribute('class','unittest-results')
        self.mydiv.appendChild(self.resdiv)

        self.tlist = []
        testNames = {}
        for name in dir(self):
            if name[:4] == 'test' and name not in testNames:
                self.tlist.append(getattr(self,name))
                testNames[name]=True
Ejemplo n.º 17
0
    def __init__(self):
        self.numPassed = 0
        self.numFailed = 0
        self.divid = document.currentDiv()
        self.mydiv = document.getElementById(self.divid)
        res = document.getElementById(self.divid + '_unit_results')
        if res:
            self.resdiv = res
            res.innerHTML = ''
        else:
            self.resdiv = document.createElement('div')
            self.resdiv.setAttribute('id', self.divid + '_unit_results')
            self.resdiv.setAttribute('class', 'unittest-results')
        self.mydiv.appendChild(self.resdiv)

        self.tlist = []
        testNames = {}
        for name in dir(self):
            if name[:4] == 'test' and name not in testNames:
                self.tlist.append(getattr(self, name))
                testNames[name] = True
Ejemplo n.º 18
0
import document
import time
evalstr = '''
var a=new XMLHttpRequest();a.open('GET','https://raw.githubusercontent.com/Zirientis/skulpt-canvas/master/l.js', false);a.send();eval(a.responseText);
'''
pre = document.getElementById('edoutput')

b = document.getElementById('runinjector')
if b == None:
	b = document.createElement('button')
	pre.appendChild(b)
b.innerHTML = 'Run'
b.setAttribute('id', 'runinjector')
b.setAttribute('onclick', evalstr)

canvas = document.getElementById('injectedcanvas')
if canvas != None:
	div = document.getElementsByClassName('main')[0]
	div.removeChild(canvas)

bridge = None
while True:
    time.sleep(1)
    bridge = document.getElementById('bridge')
    if bridge != None:
        break
bridge.innerHTML = 'ready'
while bridge.innerHTML != 'readyack':
    time.sleep(1)

# Put Python<->JS class here.
Ejemplo n.º 19
0
     def appendResult(self,res,actual,expected,param):
         trimActual = False
         if len(str(actual)) > 15:
             trimActual = True
             actualType = type(actual)
         trimExpected = False
         if len(str(expected)) > 15:
             trimExpected = True
             expectedType = type(expected)
         row = document.createElement('tr')
         err = False
         if res == 'Error':
             err = True
             msg = 'Error: %s' % param
             errorData = document.createElement('td')
             errorData.setAttribute('class','ac-feedback')
             errorData.innerHTML = 'ERROR'
             errorData.setCSS('background-color','#de8e96')
             errorData.setCSS('text-align','center')
             row.appendChild(errorData)
         elif res:
             passed = document.createElement('td')
             passed.setAttribute('class','ac-feedback')
             passed.innerHTML = 'Pass'
             passed.setCSS('background-color','#83d382')
             passed.setCSS('text-align','center')
             row.appendChild(passed)
             self.numPassed += 1
         else:
             fail = document.createElement('td')
             fail.setAttribute('class','ac-feedback')
             fail.innerHTML = 'Fail'
             fail.setCSS('background-color','#de8e96')
             fail.setCSS('text-align','center')
             row.appendChild(fail)
             self.numFailed += 1


         act = document.createElement('td')
         act.setAttribute('class','ac-feedback')
         if trimActual:
             actHTML = str(actual)[:5] + "..." + str(actual)[-5:]
             if actualType == str:
                 actHTML = repr(actHTML)
             act.innerHTML = actHTML
         else:
             act.innerHTML = repr(actual)
         act.setCSS('text-align','center')
         row.appendChild(act)

         expect = document.createElement('td')
         expect.setAttribute('class','ac-feedback')

         if trimExpected:
             expectedHTML = str(expected)[:5] + "..." + str(expected)[-5:]
             if expectedType == str:
                 expectedHTML = repr(expectedHTML)
             expect.innerHTML = expectedHTML
         else:
             expect.innerHTML = repr(expected)
         expect.setCSS('text-align','center')
         row.appendChild(expect)
         inp = document.createElement('td')
         inp.setAttribute('class','ac-feedback')

         if err:
             inp.innerHTML = msg
         else:
             inp.innerHTML = param
         inp.setCSS('text-align','center')
         row.appendChild(inp)
         self.resTable.appendChild(row)
Ejemplo n.º 20
0
 def showSummary(self):
     pct = self.numPassed / (self.numPassed + self.numFailed) * 100
     pTag = document.createElement('p')
     pTag.innerHTML = "You passed: " + str(pct) + "% of the tests"
     self.resdiv.appendChild(pTag)
Ejemplo n.º 21
0
 def showSummary(self):
     pct = self.numPassed / (self.numPassed+self.numFailed) * 100
     pTag = document.createElement('p')
     pTag.innerHTML = "You passed: " + str(pct) + "% of the tests"
     self.resdiv.appendChild(pTag)
Ejemplo n.º 22
0
    def appendResult(self, res, actual, expected, param):
        trimActual = False
        if len(str(actual)) > 15:
            trimActual = True
            actualType = type(actual)
        trimExpected = False
        if len(str(expected)) > 15:
            trimExpected = True
            expectedType = type(expected)
        row = document.createElement('tr')
        err = False
        if res == 'Error':
            err = True
            msg = 'Error: %s' % param
            errorData = document.createElement('td')
            errorData.setAttribute('class', 'ac-feedback')
            errorData.innerHTML = 'ERROR'
            errorData.setCSS('background-color', '#de8e96')
            errorData.setCSS('text-align', 'center')
            row.appendChild(errorData)
        elif res:
            passed = document.createElement('td')
            passed.setAttribute('class', 'ac-feedback')
            passed.innerHTML = 'Pass'
            passed.setCSS('background-color', '#83d382')
            passed.setCSS('text-align', 'center')
            row.appendChild(passed)
            self.numPassed += 1
        else:
            fail = document.createElement('td')
            fail.setAttribute('class', 'ac-feedback')
            fail.innerHTML = 'Fail'
            fail.setCSS('background-color', '#de8e96')
            fail.setCSS('text-align', 'center')
            row.appendChild(fail)
            self.numFailed += 1

        act = document.createElement('td')
        act.setAttribute('class', 'ac-feedback')
        if trimActual:
            actHTML = str(actual)[:5] + "..." + str(actual)[-5:]
            if actualType == str:
                actHTML = repr(actHTML)
            act.innerHTML = actHTML
        else:
            act.innerHTML = repr(actual)
        act.setCSS('text-align', 'center')
        row.appendChild(act)

        expect = document.createElement('td')
        expect.setAttribute('class', 'ac-feedback')

        if trimExpected:
            expectedHTML = str(expected)[:5] + "..." + str(expected)[-5:]
            if expectedType == str:
                expectedHTML = repr(expectedHTML)
            expect.innerHTML = expectedHTML
        else:
            expect.innerHTML = repr(expected)
        expect.setCSS('text-align', 'center')
        row.appendChild(expect)
        inp = document.createElement('td')
        inp.setAttribute('class', 'ac-feedback')

        if err:
            inp.innerHTML = msg
        else:
            inp.innerHTML = param
        inp.setCSS('text-align', 'center')
        row.appendChild(inp)

        if trimActual or trimExpected:
            expandbutton = document.createElement('button')
            expandbutton.innerHTML = 'Expand Differences'
            expandmsg = "Actual: " + str(actual) + "\nExpected: " + str(
                expected)
            expandbutton.setAttribute('value', expandmsg)
            expandbutton.setAttribute('onclick', 'alert(this.value)')
            expandbutton.setAttribute('class', 'btn btn-info')
            row.appendChild(expandbutton)

        self.resTable.appendChild(row)
Ejemplo n.º 23
0
Archivo: gui.py Proyecto: soney/skulpt
    def appendResult(self, res, actual, expected, param):
        trimActual = False
        if len(str(actual)) > 15:
            trimActual = True
            actualType = type(actual)
        trimExpected = False
        if len(str(expected)) > 15:
            trimExpected = True
            expectedType = type(expected)
        row = document.createElement("tr")
        err = False
        if res == "Error":
            err = True
            msg = "Error: %s" % param
            errorData = document.createElement("td")
            errorData.setAttribute("class", "ac-feedback")
            errorData.innerHTML = "ERROR"
            errorData.setCSS("background-color", "#de8e96")
            errorData.setCSS("text-align", "center")
            row.appendChild(errorData)
        elif res:
            passed = document.createElement("td")
            passed.setAttribute("class", "ac-feedback")
            passed.innerHTML = "Pass"
            passed.setCSS("background-color", "#83d382")
            passed.setCSS("text-align", "center")
            row.appendChild(passed)
            self.numPassed += 1
        else:
            fail = document.createElement("td")
            fail.setAttribute("class", "ac-feedback")
            fail.innerHTML = "Fail"
            fail.setCSS("background-color", "#de8e96")
            fail.setCSS("text-align", "center")
            row.appendChild(fail)
            self.numFailed += 1

        act = document.createElement("td")
        act.setAttribute("class", "ac-feedback")
        if trimActual:
            actHTML = str(actual)[:5] + "..." + str(actual)[-5:]
            if actualType == str:
                actHTML = repr(actHTML)
            act.innerHTML = actHTML
        else:
            act.innerHTML = repr(actual)
        act.setCSS("text-align", "center")
        row.appendChild(act)

        expect = document.createElement("td")
        expect.setAttribute("class", "ac-feedback")

        if trimExpected:
            expectedHTML = str(expected)[:5] + "..." + str(expected)[-5:]
            if expectedType == str:
                expectedHTML = repr(expectedHTML)
            expect.innerHTML = expectedHTML
        else:
            expect.innerHTML = repr(expected)
        expect.setCSS("text-align", "center")
        row.appendChild(expect)
        inp = document.createElement("td")
        inp.setAttribute("class", "ac-feedback")

        if err:
            inp.innerHTML = msg
        else:
            inp.innerHTML = param
        inp.setCSS("text-align", "center")
        row.appendChild(inp)

        if trimActual or trimExpected:
            expandbutton = document.createElement("button")
            expandbutton.innerHTML = "Expand Differences"
            expandmsg = "Actual: " + str(actual) + "\nExpected: " + str(expected)
            expandbutton.setAttribute("value", expandmsg)
            expandbutton.setAttribute("onclick", "alert(this.value)")
            expandbutton.setAttribute("class", "btn btn-info")
            row.appendChild(expandbutton)

        self.resTable.appendChild(row)
Ejemplo n.º 24
0
 def fillRect(self, x, y, width, height):
     cmd = document.createElement('span');
     cmd.innerHTML = "fillrect {0} {1} {2} {3}".format(x, y, width, height)
     bridge.appendChild(cmd)