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()
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()
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"
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, )
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)
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')
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)
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
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)
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)
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)
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)
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()
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()
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))
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
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
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.
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)
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)
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)
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)
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)
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)