No test files to reset
Running "yuidoc:prod" (yuidoc) task
Failed to find lines for {
  name: 'Shape',
  submodules: {
    '2D Primitives': 1,
    Curves: 1,
    Vertex: 1,
    '3D Primitives': 1,
    '3D Models': 1
  },
  elements: {},
  classes: {},
  fors: { p5: 1 },
  namespaces: {}
}
Failed to find lines for {
  name: 'Events',
  submodules: { Acceleration: 1, Keyboard: 1, Mouse: 1, Touch: 1 },
  elements: {},
  classes: {},
  fors: { p5: 1 },
  namespaces: {}
}
src/io/files.js:1388: method p5.save missing example
src/webgl/material.js:181: method p5.shader missing example
src/webgl/material.js:212: method p5.resetShader missing example
src/webgl/p5.Camera.js:187: method p5.createCamera missing example
src/webgl/p5.Camera.js:298: method p5.Camera.perspective missing example
src/webgl/p5.Camera.js:379: method p5.Camera.ortho missing example
src/webgl/p5.Camera.js:670: method p5.Camera.camera missing example
src/webgl/p5.Geometry.js:50: method p5.Geometry.computeFaces missing example
src/webgl/p5.Geometry.js:92: method p5.Geometry.computeNormals missing example
src/webgl/p5.Geometry.js:131: method p5.Geometry.averageNormals missing example
src/webgl/p5.Geometry.js:152: method p5.Geometry.averagePoleNormals missing example
src/webgl/p5.Geometry.js:245: method p5.Geometry.normalize missing example
src/webgl/p5.Shader.js:268: method p5.Shader.setUniform missing example
Start YUIDoc compile...
Scanning: src/, lib/addons/
Output: docs/reference/
YUIDoc compile completed in 1.134 seconds

Running "clean:reference" (clean) task
>> 5 paths cleaned.

Running "minjson:compile" (minjson) task
File "docs/reference/data.min.json" created: 1.46 MB → 1 MB

Running "eslint:build" (eslint) task

Running "eslint:source" (eslint) task

Running "eslint:test" (eslint) task

Running "eslint-samples:source" (eslint-samples) task

Running "browserify" task
>> Bundle lib/p5.js created.

Running "browserify:min" (browserify) task
>> Bundle lib/p5.pre-min.js created.

Running "uglify:dist" (uglify) task
>> 2 files created 1.73 MB → 485.26 kB

Running "connect:server" (connect) task
Started connect web server on http://localhost:9001

Running "mochaChrome:yui" (mochaChrome) task


[0m[0m
[0m  src/color/creating_reading.js[0m
[0m    alpha documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    blue documentation[0m
220
    [32m  ✓[0m[90m example #1 works[0m
[0m    brightness documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    color documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
    [32m  ✓[0m[90m example #4 works[0m
    [32m  ✓[0m[90m example #5 works[0m
    [32m  ✓[0m[90m example #6 works[0m
    [32m  ✓[0m[90m example #7 works[0m
    [32m  ✓[0m[90m example #8 works[0m
[0m    green documentation[0m
75
    [32m  ✓[0m[90m example #1 works[0m
[0m    hue documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    lerpColor documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    lightness documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    red documentation[0m
255
    [32m  ✓[0m[90m example #1 works[0m
0.4980392156862745
    [32m  ✓[0m[90m example #2 works[0m
[0m    saturation documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m  src/color/p5.Color.js[0m
[0m    toString documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    setRed documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    setGreen documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    setBlue documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    setAlpha documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m  src/color/setting.js[0m
[0m    background documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
    [32m  ✓[0m[90m example #4 works[0m
    [32m  ✓[0m[90m example #5 works[0m
    [32m  ✓[0m[90m example #6 works[0m
    [32m  ✓[0m[90m example #7 works[0m
    [32m  ✓[0m[90m example #8 works[0m
    [32m  ✓[0m[90m example #9 works[0m
    [32m  ✓[0m[90m example #10 works[0m
    [32m  ✓[0m[90m example #11 works[0m
[0m    clear documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    colorMode documentation[0m
    [32m  ✓[0m[90m example #1 works[0m[31m (101ms)[0m
    [32m  ✓[0m[90m example #2 works[0m[33m (64ms)[0m
    [32m  ✓[0m[90m example #3 works[0m
    [32m  ✓[0m[90m example #4 works[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    fill documentation[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
    [32m  ✓[0m[90m example #4 works[0m
    [32m  ✓[0m[90m example #5 works[0m
    [32m  ✓[0m[90m example #6 works[0m
    [32m  ✓[0m[90m example #7 works[0m
    [32m  ✓[0m[90m example #8 works[0m
    [32m  ✓[0m[90m example #9 works[0m
    [32m  ✓[0m[90m example #10 works[0m
    [32m  ✓[0m[90m example #11 works[0m
[0m    noFill documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #2 works[0m[33m (38ms)[0m
[0m    noStroke documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #2 works[0m[33m (40ms)[0m
[0m    stroke documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
    [32m  ✓[0m[90m example #4 works[0m
    [32m  ✓[0m[90m example #5 works[0m
    [32m  ✓[0m[90m example #6 works[0m
    [32m  ✓[0m[90m example #7 works[0m
    [32m  ✓[0m[90m example #8 works[0m
    [32m  ✓[0m[90m example #9 works[0m
    [32m  ✓[0m[90m example #10 works[0m
    [32m  ✓[0m[90m example #11 works[0m
[0m  src/core/shape/2d_primitives.js[0m
[0m    arc documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
    [32m  ✓[0m[90m example #4 works[0m
    [32m  ✓[0m[90m example #5 works[0m
[0m    ellipse documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    circle documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    line documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    point documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    quad documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    rect documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
[0m    square documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
[0m    triangle documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m  src/core/shape/attributes.js[0m
[0m    ellipseMode documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    noSmooth documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    rectMode documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    smooth documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    strokeCap documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    strokeJoin documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
[0m    strokeWeight documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m  src/core/shape/curves.js[0m
[0m    bezier documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    bezierDetail documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m
[0m    bezierPoint documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    bezierTangent documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    curve documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
[0m    curveDetail documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m[31m (230ms)[0m
[0m    curveTightness documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    curvePoint documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    curveTangent documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m  src/core/shape/vertex.js[0m
[0m    beginContour documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    beginShape documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
    [32m  ✓[0m[90m example #4 works[0m
    [32m  ✓[0m[90m example #5 works[0m
    [32m  ✓[0m[90m example #6 works[0m
    [32m  ✓[0m[90m example #7 works[0m
    [32m  ✓[0m[90m example #8 works[0m
    [32m  ✓[0m[90m example #9 works[0m
    [32m  ✓[0m[90m example #10 works[0m
    [32m  ✓[0m[90m example #11 works[0m
[0m    bezierVertex documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
p5.RendererGL: enabled webgl context
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #3 works[0m[31m (265ms)[0m
[0m    curveVertex documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    endContour documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    endShape documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    quadraticVertex documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    vertex documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m  src/core/constants.js[0m
[0m    HALF_PI documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    PI documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    QUARTER_PI documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    TAU documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    TWO_PI documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    DEGREES documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    RADIANS documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m  src/core/environment.js[0m
[0m    print documentation[0m
The value of x is 10
    [32m  ✓[0m[90m example #1 works[0m
[0m    frameCount documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    focused documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    cursor documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    frameRate documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    noCursor documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    displayWidth documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    displayHeight documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    windowWidth documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    windowHeight documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    windowResized documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    fullscreen documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    pixelDensity documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    displayDensity documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    getURL documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    getURLPath documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m  src/core/main.js[0m
[0m    preload documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    setup documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    draw documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    remove documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m  src/core/p5.Element.js[0m
[0m    elt documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    parent documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    id documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    class documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    mousePressed documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    doubleClicked documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    mouseWheel documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    mouseReleased documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    mouseClicked documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    mouseMoved documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    mouseOver documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    mouseOut documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    touchStarted documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    touchMoved documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    touchEnded documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    dragOver documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    dragLeave documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m  src/core/p5.Graphics.js[0m
[0m    remove documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m  src/core/rendering.js[0m
[0m    createCanvas documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    resizeCanvas documentation[0m
[0m    noCanvas documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    createGraphics documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    blendMode documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m  src/core/structure.js[0m
[0m    noLoop documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    loop documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    push documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    pop documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    redraw documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m  src/core/transform.js[0m
[0m    applyMatrix documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
    [32m  ✓[0m[90m example #4 works[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #5 works[0m
[0m    resetMatrix documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    rotate documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    rotateX documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m
[0m    rotateY documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m
[0m    rotateZ documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m
[0m    scale documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    shearX documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    shearY documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    translate documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
[0m  src/data/p5.TypedDict.js[0m
[0m    createStringDict documentation[0m
true
true
    [32m  ✓[0m[90m example #1 works[0m
[0m    createNumberDict documentation[0m
true
true
    [32m  ✓[0m[90m example #1 works[0m
[0m    size documentation[0m
3
    [32m  ✓[0m[90m example #1 works[0m
[0m    hasKey documentation[0m
true
    [32m  ✓[0m[90m example #1 works[0m
[0m    get documentation[0m
true
    [32m  ✓[0m[90m example #1 works[0m
[0m    set documentation[0m
key:p5 value:JS
    [32m  ✓[0m[90m example #1 works[0m
[0m    create documentation[0m
key:p5 value:js
key:happy value:coding
    [32m  ✓[0m[90m example #1 works[0m
[0m    clear documentation[0m
true
false
    [32m  ✓[0m[90m example #1 works[0m
[0m    remove documentation[0m
key:p5 value:js
key:happy value:coding
key:happy value:coding
    [32m  ✓[0m[90m example #1 works[0m
[0m    print documentation[0m
key:p5 value:js
key:happy value:coding
    [32m  ✓[0m[90m example #1 works[0m
[0m    saveTable documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    saveJSON documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    add documentation[0m
7
    [32m  ✓[0m[90m example #1 works[0m
[0m    sub documentation[0m
3
    [32m  ✓[0m[90m example #1 works[0m
[0m    mult documentation[0m
8
    [32m  ✓[0m[90m example #1 works[0m
[0m    div documentation[0m
4
    [32m  ✓[0m[90m example #1 works[0m
[0m    minValue documentation[0m
-10
    [32m  ✓[0m[90m example #1 works[0m
[0m    maxValue documentation[0m
3
    [32m  ✓[0m[90m example #1 works[0m
[0m    minKey documentation[0m
1.2
    [32m  ✓[0m[90m example #1 works[0m
[0m    maxKey documentation[0m
4
    [32m  ✓[0m[90m example #1 works[0m
[0m  src/events/acceleration.js[0m
[0m    accelerationX documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    accelerationY documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    accelerationZ documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    rotationX documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m
[0m    rotationY documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m
[0m    rotationZ documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m
[0m    pRotationX documentation[0m
clockwise
    [32m  ✓[0m[90m example #1 works[0m
[0m    pRotationY documentation[0m
clockwise
    [32m  ✓[0m[90m example #1 works[0m
clockwise
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    pRotationZ documentation[0m
[0m    turnAxis documentation[0m
[0m    setMoveThreshold documentation[0m
[0m    setShakeThreshold documentation[0m
[0m    deviceMoved documentation[0m
[0m    deviceTurned documentation[0m
[0m    deviceShaken documentation[0m
[0m  src/events/keyboard.js[0m
[0m    keyIsPressed documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    key documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    keyCode documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    keyPressed documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
[0m    keyReleased documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    keyTyped documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    keyIsDown documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m  src/events/mouse.js[0m
[0m    mouseX documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    mouseY documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    pmouseX documentation[0m
0 -> 0
    [32m  ✓[0m[90m example #1 works[0m
[0m    pmouseY documentation[0m
0 -> 0
    [32m  ✓[0m[90m example #1 works[0m
[0m    winMouseX documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    winMouseY documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    pwinMouseX documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    pwinMouseY documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    mouseButton documentation[0m
0
    [32m  ✓[0m[90m example #1 works[0m
[0m    mouseIsPressed documentation[0m
false
    [32m  ✓[0m[90m example #1 works[0m
[0m    mouseMoved documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
[0m    mouseDragged documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
[0m    mousePressed documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
[0m    mouseReleased documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
[0m    mouseClicked documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
[0m    doubleClicked documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
[0m    mouseWheel documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m  src/events/touch.js[0m
[0m    touches documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    touchStarted documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
[0m    touchMoved documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
[0m    touchEnded documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
[0m  src/image/image.js[0m
[0m    createImage documentation[0m
    [32m  ✓[0m[90m example #1 works[0m[33m (44ms)[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
[0m    saveFrames documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m  src/image/loading_displaying.js[0m
[0m    loadImage documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    image documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
    [32m  ✓[0m[90m example #4 works[0m
[0m    tint documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
[0m    noTint documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    imageMode documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
[0m  src/image/p5.Image.js[0m
[0m    width documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    height documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    pixels documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m[31m (89ms)[0m
[0m    loadPixels documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    updatePixels documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    get documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    set documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    resize documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    copy documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    mask documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    filter documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    blend documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
[0m    save documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    p5.Image documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m  src/image/pixels.js[0m
[0m    pixels documentation[0m
    [32m  ✓[0m[90m example #1 works[0m[33m (66ms)[0m
[0m    blend documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
[0m    copy documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    filter documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
    [32m  ✓[0m[90m example #4 works[0m
    [32m  ✓[0m[90m example #5 works[0m
    [32m  ✓[0m[90m example #6 works[0m
    [32m  ✓[0m[90m example #7 works[0m[33m (44ms)[0m
    [32m  ✓[0m[90m example #8 works[0m
[0m    get documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    loadPixels documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    set documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
[0m    updatePixels documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m  src/io/files.js[0m
[0m    loadJSON documentation[0m
    [32m  ✓[0m[90m example #1 works[0m[31m (111ms)[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    loadStrings documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    loadTable documentation[0m
3 total rows in table
3 total columns in table
0
Capra hircus
Goat
1
Panthera pardus
Leopard
2
Equus zebra
Zebra
[ 'Goat', 'Leopard', 'Zebra' ]
    [32m  ✓[0m[90m example #1 works[0m
[0m    loadXML documentation[0m
0, Capra hircus, Goat
1, Panthera pardus, Leopard
2, Equus zebra, Zebra
    [32m  ✓[0m[90m example #1 works[0m
[0m    loadBytes documentation[0m
3c
3f
78
6d
6c
    [32m  ✓[0m[90m example #1 works[0m
[0m    httpGet documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    httpPost documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    httpDo documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    createWriter documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    saveJSON documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    saveStrings documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    saveTable documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m  src/io/p5.Table.js[0m
[0m    addRow documentation[0m
0
Capra hircus
Goat
1
Panthera pardus
Leopard
2
Equus zebra
Zebra
3
Canis Lupus
Wolf
    [32m  ✓[0m[90m example #1 works[0m
[0m    removeRow documentation[0m
1
Panthera pardus
Leopard
2
Equus zebra
Zebra
    [32m  ✓[0m[90m example #1 works[0m
[0m    getRow documentation[0m
1
Panthera pardus
Leopard
    [32m  ✓[0m[90m example #1 works[0m
[0m    getRows documentation[0m
0
Capra hircus
Unicorn
1
Panthera pardus
Unicorn
2
Equus zebra
Unicorn
    [32m  ✓[0m[90m example #1 works[0m
[0m    findRow documentation[0m
Equus zebra
    [32m  ✓[0m[90m example #1 works[0m
[0m    findRows documentation[0m
2 Goats found
    [32m  ✓[0m[90m example #1 works[0m
[0m    matchRow documentation[0m
Panthera pardus
    [32m  ✓[0m[90m example #1 works[0m
[0m    matchRows documentation[0m
Snake: Reptile
Lizard: Reptile
    [32m  ✓[0m[90m example #1 works[0m
[0m    getColumn documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[ 'Capra hircus', 'Panthera pardus', 'Equus zebra' ]
[0m    clearRows documentation[0m
0 total rows in table
3 total columns in table
    [32m  ✓[0m[90m example #1 works[0m
[0m    addColumn documentation[0m
0
Capra hircus
Goat
no
1
Panthera pardus
Leopard
yes
2
Equus zebra
Zebra
no
    [32m  ✓[0m[90m example #1 works[0m
[0m    getColumnCount documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    getRowCount documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    removeTokens documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[ [ 'Lion', 'Mammal' ], [ 'Snake', 'Reptile' ] ]
[0m    trim documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[ [ 'Lion,', 'Mammal' ], [ 'Snake', 'Reptile' ] ]
[0m    removeColumn documentation[0m
2
    [32m  ✓[0m[90m example #1 works[0m
[0m    set documentation[0m
{}
0
Canis Lupus
Wolf
1
Panthera pardus
Leopard
2
Equus zebra
Zebra
    [32m  ✓[0m[90m example #1 works[0m
[0m    setNum documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[ '0', 1, '2' ]
[0m    setString documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[
  [ '0', 'Capra hircus', 'Goat' ],
  [ '1', 'Panthera pardus', 'Leopard' ],
  [ '2', 'Equus zebra', 'Zebra' ],
  [ '3', 'Canis Lupus', 'Wolf' ]
]
[0m    get documentation[0m
Capra hircus
Capra hircus
    [32m  ✓[0m[90m example #1 works[0m
[0m    getNum documentation[0m
101
    [32m  ✓[0m[90m example #1 works[0m
[0m    getString documentation[0m
0
Capra hircus
Goat
1
Panthera pardus
Leopard
2
Equus zebra
Zebra
    [32m  ✓[0m[90m example #1 works[0m
[0m    getObject documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
{
  '0': { id: '0', species: 'Capra hircus', name: 'Goat' },
  '1': { id: '1', species: 'Panthera pardus', name: 'Leopard' },
  '2': { id: '2', species: 'Equus zebra', name: 'Zebra' }
}
[0m    getArray documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[ '0', 'Capra hircus', 'Goat' ]
[ '1', 'Panthera pardus', 'Leopard' ]
[0m  src/io/p5.TableRow.js[0m
[0m    set documentation[0m
[ '2', 'Equus zebra', 'Zebra' ]
    [32m  ✓[0m[90m example #1 works[0m
[
  [ '0', 'Capra hircus', 'Unicorn' ],
  [ '1', 'Panthera pardus', 'Unicorn' ],
  [ '2', 'Equus zebra', 'Unicorn' ]
]
[0m    setNum documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[
  [ 10, 'Capra hircus', 'Goat' ],
  [ 11, 'Panthera pardus', 'Leopard' ],
  [ 12, 'Equus zebra', 'Zebra' ]
]
[0m    setString documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[
  [ '0', 'Capra hircus', 'A Goat named George' ],
  [ '1', 'Panthera pardus', 'A Leopard named George' ],
  [ '2', 'Equus zebra', 'A Zebra named George' ]
]
[0m    get documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[ 'Goat', 'Leopard', 'Zebra' ]
[0m    getNum documentation[0m
minimum id = 0, maximum id = -Infinity
    [32m  ✓[0m[90m example #1 works[0m
[0m    getString documentation[0m
longest: Panthera pardus
    [32m  ✓[0m[90m example #1 works[0m
[0m  src/io/p5.XML.js[0m
[0m    getParent documentation[0m
mammals
    [32m  ✓[0m[90m example #1 works[0m
[0m    getName documentation[0m
mammals
    [32m  ✓[0m[90m example #1 works[0m
[0m    setName documentation[0m
mammals
fish
    [32m  ✓[0m[90m example #1 works[0m
[0m    hasChildren documentation[0m
true
    [32m  ✓[0m[90m example #1 works[0m
[0m    listChildren documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[
  '#text', 'animal',
  '#text', 'animal',
  '#text', 'animal',
  '#text'
]
[0m    getChildren documentation[0m
Goat
Leopard
Zebra
    [32m  ✓[0m[90m example #1 works[0m
[0m    getChild documentation[0m
Goat
    [32m  ✓[0m[90m example #1 works[0m
Leopard
    [32m  ✓[0m[90m example #2 works[0m
[0m    addChild documentation[0m
Platypus
    [32m  ✓[0m[90m example #1 works[0m
[0m    removeChild documentation[0m
Leopard
Zebra
    [32m  ✓[0m[90m example #1 works[0m
Goat
Zebra
    [32m  ✓[0m[90m example #2 works[0m
[0m    getAttributeCount documentation[0m
2
    [32m  ✓[0m[90m example #1 works[0m
[0m    listAttributes documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[ 'id', 'species' ]
[0m    hasAttribute documentation[0m
true
false
    [32m  ✓[0m[90m example #1 works[0m
[0m    getNum documentation[0m
0
    [32m  ✓[0m[90m example #1 works[0m
[0m    getString documentation[0m
Capra hircus
    [32m  ✓[0m[90m example #1 works[0m
[0m    setAttribute documentation[0m
Capra hircus
Jamides zebra
    [32m  ✓[0m[90m example #1 works[0m[33m (42ms)[0m
[0m    getContent documentation[0m
Goat
    [32m  ✓[0m[90m example #1 works[0m[31m (92ms)[0m
[0m    setContent documentation[0m
Goat
Mountain Goat
    [32m  ✓[0m[90m example #1 works[0m[33m (52ms)[0m
[0m    serialize documentation[0m
<mammals>
  <animal id="0" species="Capra hircus">Goat</animal>
  <animal id="1" species="Panthera pardus">Leopard</animal>
  <animal id="2" species="Equus zebra">Zebra</animal>
</mammals>
    [32m  ✓[0m[90m example #1 works[0m[33m (50ms)[0m
[0m    p5.XML documentation[0m
0, Capra hircus, Goat
1, Panthera pardus, Leopard
2, Equus zebra, Zebra
    [32m  ✓[0m[90m example #1 works[0m[31m (134ms)[0m
[0m  src/math/calculation.js[0m
[0m    abs documentation[0m
-3
3
    [32m  ✓[0m[90m example #1 works[0m
[0m    ceil documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    constrain documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    dist documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    exp documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    floor documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    lerp documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    log documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    mag documentation[0m
36.05551275463989
85.44003745317531
72.80109889280519
106.3014581273465
    [32m  ✓[0m[90m example #1 works[0m
[0m    map documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    max documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    min documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    norm documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    pow documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    round documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    sq documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    sqrt documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m  src/math/math.js[0m
[0m    createVector documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m[31m (189ms)[0m
[0m  src/math/noise.js[0m
[0m    noise documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    noiseDetail documentation[0m
    [32m  ✓[0m[90m example #1 works[0m[31m (117ms)[0m
[0m    noiseSeed documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m  src/math/p5.Vector.js[0m
[0m    toString documentation[0m
p5.Vector Object : [20, 30, 0]
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    set documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    copy documentation[0m
true
    [32m  ✓[0m[90m example #1 works[0m
[0m    add documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
[0m    sub documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
[0m    mult documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
[0m    div documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
[0m    mag documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
53.85164807134504
    [32m  ✓[0m[90m example #2 works[0m
[0m    magSq documentation[0m
56
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    dot documentation[0m
20
    [32m  ✓[0m[90m example #1 works[0m
10
    [32m  ✓[0m[90m example #2 works[0m
[0m    cross documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    dist documentation[0m
1.4142135623730951
    [32m  ✓[0m[90m example #1 works[0m
1.4142135623730951
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
[0m    normalize documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    limit documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    setMag documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    heading documentation[0m
1.0303768265243125
0.8960553845713439
1.1659045405098132
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    rotate documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    angleBetween documentation[0m
1.5707963267948966
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    lerp documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
[0m    array documentation[0m
[ 20, 30, 0 ]
    [32m  ✓[0m[90m example #1 works[0m
10
20
30
    [32m  ✓[0m[90m example #2 works[0m
[0m    equals documentation[0m
true
false
    [32m  ✓[0m[90m example #1 works[0m
true
false
    [32m  ✓[0m[90m example #2 works[0m
[0m    fromAngle documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    fromAngles documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m[33m (56ms)[0m
[0m    random2D documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
{ x: -0.8985548692658778, y: 0.4388611932246702, z: 0 }
    [32m  ✓[0m[90m example #2 works[0m
[0m    random3D documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
{
  x: -0.21919421069139813,
  y: -0.8985969797166214,
  z: 0.38010178379421067
}
[0m    p5.Vector documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m  src/math/random.js[0m
[0m    randomSeed documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    random documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
[0m    randomGaussian documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m  src/math/trigonometry.js[0m
[0m    acos documentation[0m
3.141592653589793 : -1 : 3.141592653589793
    [32m  ✓[0m[90m example #1 works[0m
3.9269908169872414 : -0.7071067811865477 : 2.3561944901923453
    [32m  ✓[0m[90m example #2 works[0m
[0m    asin documentation[0m
4.1887902047863905 : -0.8660254037844385 : -1.0471975511965974
    [32m  ✓[0m[90m example #1 works[0m
4.1887902047863905 : -0.8660254037844385 : -1.0471975511965974
    [32m  ✓[0m[90m example #2 works[0m
[0m    atan documentation[0m
4.1887902047863905 : 1.7320508075688754 : 1.0471975511965972
    [32m  ✓[0m[90m example #1 works[0m
4.1887902047863905 : 1.7320508075688754 : 1.0471975511965972
    [32m  ✓[0m[90m example #2 works[0m
[0m    atan2 documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    cos documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    sin documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    tan documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    degrees documentation[0m
0.7853981633974483 radians is 45 degrees
    [32m  ✓[0m[90m example #1 works[0m
[0m    radians documentation[0m
45 degrees is 0.7853981633974483 radians
    [32m  ✓[0m[90m example #1 works[0m
[0m    angleMode documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m  src/typography/attributes.js[0m
[0m    textAlign documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    textLeading documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    textSize documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    textStyle documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    textWidth documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    textAscent documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    textDescent documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m  src/typography/loading_displaying.js[0m
[0m    loadFont documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m[33m (47ms)[0m
[0m    text documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #3 works[0m[31m (78ms)[0m
[0m    textFont documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m[31m (110ms)[0m
[0m  src/typography/p5.Font.js[0m
[0m    textBounds documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    textToPoints documentation[0m
    [32m  ✓[0m[90m example #1 works[0m[31m (185ms)[0m
[0m  src/utilities/array_functions.js[0m
[0m    append documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[ 'Mango', 'Apple', 'Papaya', 'Peach' ]
[ 'Mango', 'Apple', 'Papaya', 'Peach' ]
[0m    arrayCopy documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[ 'A', 'B', 'C' ]
[ 'B', 'C', 3 ]
[ 'B', 'C', 3 ]
[0m    concat documentation[0m
[ 'A', 'B', 'C' ]
[ 1, 2, 3 ]
[ 'A', 'B', 'C' ]
    [32m  ✓[0m[90m example #1 works[0m
[ 1, 2, 3 ]
[ 'A', 'B', 'C', 1, 2, 3 ]
[0m    reverse documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[ 'C', 'B', 'A' ]
[ 'C', 'B', 'A' ]
[0m    shorten documentation[0m
[ 'A', 'B' ]
    [32m  ✓[0m[90m example #1 works[0m
[ 'A', 'B' ]
[ 'A', 'B' ]
[0m    shuffle documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    sort documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[ 'banana', 'apple', 'pear', 'lime' ]
[ 'apple', 'banana', 'lime', 'pear' ]
    [32m  ✓[0m[90m example #2 works[0m
[
   2, 6, 1,  5,
  14, 9, 8, 12
]
[
   1, 2, 5,  6,
  14, 9, 8, 12
]
[0m    splice documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[
  0,   1,   2, 'A',
  'B', 'C', 3, 4
]
[ 'A', 'B', 'C' ]
[
  0,   1,   2, 'A',
  'B', 'C', 3, 4
]
[0m    subset documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[ 1, 2, 3, 4, 5 ]
[ 1, 2, 3 ]
[ 3, 4 ]
[0m  src/utilities/conversion.js[0m
[0m    float documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    int documentation[0m
10
10
-10
1
0
    [32m  ✓[0m[90m example #1 works[0m
[ 0, 1, 10, 9 ]
[0m    str documentation[0m
10
10.31
-10
true
false
    [32m  ✓[0m[90m example #1 works[0m
[ 'true', '10.3', '9.8' ]
[0m    boolean documentation[0m
false
true
true
false
    [32m  ✓[0m[90m example #1 works[0m
[ false, true, true ]
[0m    byte documentation[0m
127
-128
23
23
NaN
1
    [32m  ✓[0m[90m example #1 works[0m
[ 0, -1, 100 ]
[0m    char documentation[0m
A
A
ABC
    [32m  ✓[0m[90m example #1 works[0m
[ 'A', 'B', 'C' ]
[0m    unchar documentation[0m
65
    [32m  ✓[0m[90m example #1 works[0m
[ 65, 66, 67 ]
[ 65, 66, 67 ]
[0m    hex documentation[0m
000000FF
0000FF
    [32m  ✓[0m[90m example #1 works[0m
[ '000000', '00007F', '0000FF' ]
[0m    unhex documentation[0m
10
255
    [32m  ✓[0m[90m example #1 works[0m
[ 255, 170, 0 ]
[0m  src/utilities/string_functions.js[0m
[0m    join documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    match documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    matchAll documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    nf documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    nfc documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    nfp documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    nfs documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    split documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    splitTokens documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[ 'Mango', ' Banana', ' Lime' ]
[0m    trim documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m  src/utilities/time_date.js[0m
[0m    day documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    hour documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    minute documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    millis documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    month documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    second documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    year documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m  src/webgl/3d_primitives.js[0m
[0m    plane documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m
[0m    box documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m
[0m    sphere documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m
[0m    cylinder documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m[31m (198ms)[0m
[0m    cone documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m
[0m    ellipsoid documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m
[0m    torus documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m[33m (46ms)[0m
[0m  src/webgl/interaction.js[0m
[0m    orbitControl documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m
[0m    debugMode documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #2 works[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #3 works[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #4 works[0m[31m (90ms)[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #5 works[0m
[0m    noDebugMode documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m
[0m  src/webgl/light.js[0m
[0m    ambientLight documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m[31m (79ms)[0m
[0m    directionalLight documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m[33m (71ms)[0m
[0m    pointLight documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m[33m (49ms)[0m
[0m    lights documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m
[0m  src/webgl/loading.js[0m
[0m    loadModel documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m[33m (42ms)[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #2 works[0m[31m (164ms)[0m
[0m    model documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m[33m (71ms)[0m
[0m  src/webgl/material.js[0m
[0m    loadShader documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m[33m (45ms)[0m
[0m    createShader documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m
[0m    normalMaterial documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m[33m (45ms)[0m
[0m    texture documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m[33m (66ms)[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #2 works[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #3 works[0m[33m (48ms)[0m
[0m    textureMode documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m
[0m    textureWrap documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m[33m (45ms)[0m
[0m    ambientMaterial documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m[33m (39ms)[0m
[0m    specularMaterial documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m[33m (46ms)[0m
[0m    shininess documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m[33m (41ms)[0m
[0m  src/webgl/p5.Camera.js[0m
[0m    camera documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m
[0m    perspective documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m
[0m    ortho documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m
[0m    pan documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m
[0m    tilt documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m
[0m    lookAt documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m
[0m    move documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m
[0m    setPosition documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m
[0m    setCamera documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m
[0m    p5.Camera documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m
[0m  src/webgl/p5.RendererGL.js[0m
[0m    setAttributes documentation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #1 works[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #2 works[0m[33m (38ms)[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m example #3 works[0m[33m (50ms)[0m
[0m  lib/addons/p5.dom.js[0m
[0m    select documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    selectAll documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    removeElements documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    changed documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    input documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    createDiv documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    createP documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    createSpan documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    createImg documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    createA documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    createSlider documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    createButton documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    createCheckbox documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    createSelect documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    createRadio documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    createColorPicker documentation[0m
    [32m  ✓[0m[90m example #1 works[0m


[0m    createInput documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    createFileInput documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    createVideo documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    createAudio documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    createElement documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    addClass documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    removeClass documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    hasClass documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    toggleClass documentation[0m
[0m    child documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    center documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    html documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
WARN: Element play method raised an error asynchronously {}
[0m    position documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    style documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
    [32m  ✓[0m[90m example #3 works[0m
    [32m  ✓[0m[90m example #4 works[0m
[0m    attribute documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    removeAttribute documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    value documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    show documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    hide documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    size documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    remove documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    drop documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    src documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    play documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    stop documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    pause documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    loop documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    noLoop documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    volume documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
    [32m  ✓[0m[90m example #2 works[0m
[0m    time documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
WARN: Element play method raised an error asynchronously {}
[0m    duration documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    onended documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    showControls documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    hideControls documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    addCue documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    removeCue documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    clearCues documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m  lib/addons/p5.sound.js[0m
[0m    getAudioContext documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    userStartAudio documentation[0m



    [32m  ✓[0m[90m example #1 works[0m

[0m    midiToFreq documentation[0m


    [32m  ✓[0m[90m example #1 works[0m

[0m    soundFormats documentation[0m


    [32m  ✓[0m[90m example #1 works[0m

[0m    loadSound documentation[0m



    [32m  ✓[0m[90m example #1 works[0m[33m (40ms)[0m

[0m    playMode documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    pause documentation[0m




    [32m  ✓[0m[90m example #1 works[0m
[0m    pan documentation[0m
    [32m  ✓[0m[90m example #1 works[0m

[0m    rate documentation[0m



    [32m  ✓[0m[90m example #1 works[0m
[0m    reverseBuffer documentation[0m


    [32m  ✓[0m[90m example #1 works[0m

[0m    addCue documentation[0m

    [32m  ✓[0m[90m example #1 works[0m
[0m    save documentation[0m


    [32m  ✓[0m[90m example #1 works[0m
[0m    getBlob documentation[0m


    [32m  ✓[0m[90m example #1 works[0m[33m (47ms)[0m
[0m    setInput documentation[0m







    [32m  ✓[0m[90m example #1 works[0m
[0m    getLevel documentation[0m




    [32m  ✓[0m[90m example #1 works[0m
[0m    analyze documentation[0m

    [32m  ✓[0m[90m example #1 works[0m

[0m    getCentroid documentation[0m
    [32m  ✓[0m[90m example #1 works[0m

[0m    freq documentation[0m

    [32m  ✓[0m[90m example #1 works[0m

[0m    set documentation[0m

    [32m  ✓[0m[90m example #1 works[0m

{}

[0m    setADSR documentation[0m

    [32m  ✓[0m[90m example #1 works[0m

[0m    setRange documentation[0m

    [32m  ✓[0m[90m example #1 works[0m


[0m    play documentation[0m

    [32m  ✓[0m[90m example #1 works[0m


[0m    triggerAttack documentation[0m

    [32m  ✓[0m[90m example #1 works[0m

[0m    triggerRelease documentation[0m

    [32m  ✓[0m[90m example #1 works[0m
[0m    ramp documentation[0m

    [32m  ✓[0m[90m example #1 works[0m

[0m    getSources documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
unable to set input source
[0m    createConvolver documentation[0m
[]








    [32m  ✓[0m[90m example #1 works[0m[31m (472ms)[0m


[0m    process documentation[0m






    [32m  ✓[0m[90m example #1 works[0m[31m (379ms)[0m

[0m    onPeak documentation[0m


    [32m  ✓[0m[90m example #1 works[0m
[0m    play documentation[0m

    [32m  ✓[0m[90m example #1 works[0m

[0m    triggerAttack documentation[0m

    [32m  ✓[0m[90m example #1 works[0m
[0m    triggerRelease documentation[0m

    [32m  ✓[0m[90m example #1 works[0m
[0m    play documentation[0m








    [32m  ✓[0m[90m example #1 works[0m

[0m    noteAttack documentation[0m








    [32m  ✓[0m[90m example #1 works[0m

[0m    noteRelease documentation[0m








    [32m  ✓[0m[90m example #1 works[0m
[0m    p5.SoundFile documentation[0m




    [32m  ✓[0m[90m example #1 works[0m
[0m    p5.Amplitude documentation[0m

    [32m  ✓[0m[90m example #1 works[0m

[0m    p5.FFT documentation[0m

    [32m  ✓[0m[90m example #1 works[0m

[0m    p5.Signal documentation[0m


    [32m  ✓[0m[90m example #1 works[0m
[0m    p5.Oscillator documentation[0m

    [32m  ✓[0m[90m example #1 works[0m

[0m    p5.Envelope documentation[0m

    [32m  ✓[0m[90m example #1 works[0m
[0m    p5.Pulse documentation[0m



    [32m  ✓[0m[90m example #1 works[0m

[0m    p5.AudioIn documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
{}
[0m    p5.Filter documentation[0m

    [32m  ✓[0m[90m example #1 works[0m

[0m    p5.EQ documentation[0m

    [32m  ✓[0m[90m example #1 works[0m

[0m    p5.Delay documentation[0m

    [32m  ✓[0m[90m example #1 works[0m

[0m    p5.Reverb documentation[0m


    [32m  ✓[0m[90m example #1 works[0m[31m (296ms)[0m


[0m    p5.Convolver documentation[0m







    [32m  ✓[0m[90m example #1 works[0m[31m (479ms)[0m

[0m    p5.Phrase documentation[0m

    [32m  ✓[0m[90m example #1 works[0m
[0m    p5.Part documentation[0m

    [32m  ✓[0m[90m example #1 works[0m
[0m    p5.SoundLoop documentation[0m

    [32m  ✓[0m[90m example #1 works[0m
[0m    p5.SoundRecorder documentation[0m
    [32m  ✓[0m[90m example #1 works[0m
[0m    p5.PeakDetect documentation[0m
{}


    [32m  ✓[0m[90m example #1 works[0m
[0m    p5.Gain documentation[0m






    [32m  ✓[0m[90m example #1 works[0m[33m (40ms)[0m

[0m    p5.MonoSynth documentation[0m

    [32m  ✓[0m[90m example #1 works[0m
[0m    p5.PolySynth documentation[0m








    [32m  ✓[0m[90m example #1 works[0m

[92m [0m[32m 731 passing[0m[90m (33s)[0m

Running "mochaChrome:test" (mochaChrome) task
[0m[0m
[0m  DOM[0m
[0m    p5.prototype.select[0m
    [32m  ✓[0m[90m should find elements by ID[0m
    [32m  ✓[0m[90m should return null when elements by ID are not found[0m
    [32m  ✓[0m[90m should find elements by class[0m
    [32m  ✓[0m[90m should return null when elements by class are not found[0m
    [32m  ✓[0m[90m should find elements by tag name[0m
    [32m  ✓[0m[90m should return null when elements by tag name are not found[0m
    [32m  ✓[0m[90m should create an empty node when no html is provided[0m
[0m    p5.prototype.createButton[0m
    [32m  ✓[0m[90m mousePressed works[0m
[0m    p5.prototype.drop[0m
    [32m  ✓[0m[90m drop fires multiple events[0m
[0m  color/p5.ColorConversion[0m
[0m    rgbaToHSBA[0m
    [32m  ✓[0m[90m rgba converts to hsba[0m
[0m    hsbaToRGBA[0m
    [32m  ✓[0m[90m hsba converts to rgba[0m
    [32m  ✓[0m[90m handles maximum hue value[0m
[0m    hslaToRGBA[0m
    [32m  ✓[0m[90m hsla converts to rgba[0m
    [32m  ✓[0m[90m handles maximum hue value[0m
[0m    rgbaToHSLA[0m
    [32m  ✓[0m[90m rgba converts to hsla (low lightness)[0m
    [32m  ✓[0m[90m rgba converts to hsla (high lightness)[0m
    [32m  ✓[0m[90m hsla converts to hsba[0m
[0m    hslaToHSBA[0m
[0m    hsbaToHSLA[0m
    [32m  ✓[0m[90m hsba converts to hsla[0m
[0m  color/CreatingReading[0m
    [32m  ✓[0m[90m no friendly-err-msg I[0m
[0m    p5.prototype.alpha[0m
    [32m  ✓[0m[90m no friendly-err-msg II[0m
    [32m  ✓[0m[90m wrong param type at #0[0m
[0m    p5.prototype.red, green, blue[0m
    [32m  ✓[0m[90m red(): no friendly-err-msg[0m
    [32m  ✓[0m[90m green(): no friendly-err-msg[0m
    [32m  ✓[0m[90m blue(): no friendly-err-msg[0m
[0m    p5.prototype.hue, brightness, lightness, saturation[0m
    [32m  ✓[0m[90m hue(): no friendly-err-msg[0m
    [32m  ✓[0m[90m brightness(): no friendly-err-msg[0m
    [32m  ✓[0m[90m lightness(): no friendly-err-msg[0m
    [32m  ✓[0m[90m saturation(): no friendly-err-msg[0m
[0m    p5.prototype.lerpColor[0m
    [32m  ✓[0m[90m should correctly get lerp colors in RGB[0m
    [32m  ✓[0m[90m should correctly get lerp colors in HSL[0m
    [32m  ✓[0m[90m should correctly get lerp colors in HSB[0m
    [32m  ✓[0m[90m should not extrapolate[0m
    [32m  ✓[0m[90m missing param #2[0m
[0m    p5.prototype.lerpColor with alpha[0m
    [32m  ✓[0m[90m should correctly get lerp colors in RGB with alpha[0m
    [32m  ✓[0m[90m should correctly get lerp colors in HSL with alpha[0m
    [32m  ✓[0m[90m should correctly get lerp colors in HSB with alpha[0m
    [32m  ✓[0m[90m should not extrapolate[0m
[0m  p5.Color[0m
[0m    p5.prototype.color(r,g,b)[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
    [32m  ✓[0m[90m shouldn't set HSBA property before hsb access func is called[0m
    [32m  ✓[0m[90m shouldn't set HSLA property before hsb access func is called[0m
    [32m  ✓[0m[90m color(): missing param #0 + throws error[0m
[0m    p5.prototype.color("#rgb")[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
    [32m  ✓[0m[90m invalid hex values resolve to white[0m
    [32m  ✓[0m[90m should not be able to pass css & alpha[0m
[0m      spot check[0m
      [32m  ✓[0m[90m numeric hex values[0m
      [32m  ✓[0m[90m alphabetic hex values[0m
      [32m  ✓[0m[90m alphanumeric hex values[0m
[0m    p5.prototype.color("#rgba")[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
    [32m  ✓[0m[90m invalid hex values resolve to white[0m
[0m      spot check[0m
      [32m  ✓[0m[90m numeric hex values[0m
      [32m  ✓[0m[90m alphabetic hex values[0m
      [32m  ✓[0m[90m alphanumeric hex values[0m
[0m    p5.prototype.color("#rrggbb")[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
    [32m  ✓[0m[90m invalid hex values resolve to white[0m
[0m      spot check[0m
      [32m  ✓[0m[90m numeric hex values[0m
      [32m  ✓[0m[90m alphabetic hex values[0m
      [32m  ✓[0m[90m alphanumeric hex values[0m
[0m    p5.prototype.color("#rrggbbaa")[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
    [32m  ✓[0m[90m invalid hex values resolve to white[0m
[0m      spot check[0m
      [32m  ✓[0m[90m numeric hex values[0m
      [32m  ✓[0m[90m alphabetic hex values[0m
      [32m  ✓[0m[90m alphanumeric hex values[0m
[0m    p5.prototype.color("rgb(r,g,b)")[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
    [32m  ✓[0m[90m spot check variant spacing[0m
    [32m  ✓[0m[90m invalid RGB values resolve to white[0m
[0m    p5.prototype.color("rgb(r%,g%,b%)")[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
    [32m  ✓[0m[90m spot check variant spacing[0m
    [32m  ✓[0m[90m spot check decimal percentage values[0m
    [32m  ✓[0m[90m invalid percentage values default to white[0m
[0m    p5.prototype.color("rgba(r,g,b,a)")[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
    [32m  ✓[0m[90m spot check variant spacing[0m
    [32m  ✓[0m[90m invalid RGBA values resolve to white[0m
[0m    p5.prototype.color("rgba(r%,g%,b%,a)")[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
    [32m  ✓[0m[90m spot check variant spacing[0m
    [32m  ✓[0m[90m spot check decimal percentage values[0m
    [32m  ✓[0m[90m invalid RGBA percentage values resolve to white[0m
[0m    p5.prototype.color("hsl(h, s%, l%)")[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
[0m    p5.prototype.color("hsla(h, s%, l%, a)")[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
[0m    p5.prototype.color("hsb(h, s%, b%)")[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
[0m    p5.prototype.color("hsba(h, s%, b%, a)")[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
[0m    p5.prototype.color("svgnamedcolor")[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
    [32m  ✓[0m[90m spot check color keywords[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
[0m    p5.prototype.color([])[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
[0m    p5.prototype.color(r,g,b,a)[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
    [32m  ✓[0m[90m should correctly get hue/saturation/brightness/lightness[0m
    [32m  ✓[0m[90m should correctly get RGBA values[0m
    [32m  ✓[0m[90m should correctly render color string[0m
[0m    in default mode[0m
    [32m  ✓[0m[90m can be modified with alpha setter[0m
    [32m  ✓[0m[90m can be modified with rgb setters[0m
[0m    p5.Color in RGB mode with custom range[0m
    [32m  ✓[0m[90m should correctly convert to RGBA[0m
    [32m  ✓[0m[90m should correctly get RGBA property[0m
    [32m  ✓[0m[90m should correctly render color string[0m
    [32m  ✓[0m[90m should correctly get RGBA property after overwrite[0m
[0m    p5.Color in HSL mode[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
    [32m  ✓[0m[90m can be modified with alpha setter[0m
    [32m  ✓[0m[90m can be modified with rgb setters[0m
[0m    p5.Color in HSL mode with Alpha[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
    [32m  ✓[0m[90m should correctly get hue/saturation/lightness/alpha[0m
[0m    p5.Color in HSL mode with custom range[0m
    [32m  ✓[0m[90m should correctly get HSLA property[0m
    [32m  ✓[0m[90m should correctly convert to RGBA[0m
    [32m  ✓[0m[90m should correctly render color string[0m
    [32m  ✓[0m[90m can be modified with alpha setter[0m
    [32m  ✓[0m[90m can be modified with rgb setters[0m
[0m    p5.Color in HSL mode with RGB string[0m
    [32m  ✓[0m[90m should correctly get HSLA property[0m
    [32m  ✓[0m[90m should correctly convert to RGBA[0m
    [32m  ✓[0m[90m should correctly render color string[0m
[0m    p5.Color in HSL mode with HSL string[0m
    [32m  ✓[0m[90m should correctly get HSLA property[0m
    [32m  ✓[0m[90m should correctly convert to RGBA[0m
    [32m  ✓[0m[90m should correctly render color string[0m
[0m    p5.Color in HSL mode with HSB string[0m
    [32m  ✓[0m[90m should correctly get HSLA property[0m
    [32m  ✓[0m[90m should correctly convert to RGBA[0m
    [32m  ✓[0m[90m should correctly render color string[0m
[0m    p5.Color in HSB mode[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
    [32m  ✓[0m[90m can be modified with alpha setter[0m
    [32m  ✓[0m[90m can be modified with rgb setters[0m
[0m    p5.Color in HSB mode with Alpha[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
    [32m  ✓[0m[90m should correctly get hue/saturation/brightness/alpha[0m
    [32m  ✓[0m[90m should correctly get HSBA property[0m
[0m    p5.Color in HSB mode with custom range[0m
    [32m  ✓[0m[90m should correctly convert to RGBA[0m
    [32m  ✓[0m[90m should correctly render color string[0m
[0m    p5.Color in HSB mode with RGB string[0m
    [32m  ✓[0m[90m should correctly get HSBA property[0m
    [32m  ✓[0m[90m should correctly convert to RGBA[0m
    [32m  ✓[0m[90m should correctly render color string[0m
[0m    p5.Color in HSB mode with HSB string[0m
    [32m  ✓[0m[90m should correctly get HSBA property[0m
    [32m  ✓[0m[90m should correctly convert to RGBA[0m
    [32m  ✓[0m[90m should correctly render color string[0m
[0m    p5.Color in HSB mode with HSL string[0m
    [32m  ✓[0m[90m should correctly get HSBA property[0m
    [32m  ✓[0m[90m should correctly convert to RGBA[0m
    [32m  ✓[0m[90m should correctly render color string[0m
[0m    p5.Color in RGB mode with grayscale value[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGB levels[0m
[0m    p5.Color in RGB mode with grayscale value and alpha[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGB levels[0m
[0m    p5.Color in HSB mode with grayscale value[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGB levels[0m
[0m    p5.Color in HSB mode with grayscale value and alpha[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGB levels[0m
[0m    p5.Color in HSL mode with grayscale value[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGB levels[0m
[0m    p5.Color in HSL mode with grayscale value and alpha[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGB levels[0m
[0m    p5.Color.prototype.toString[0m
    [32m  ✓[0m[90m should generate (r,g,b,a) color string with 0-1 normalized alpha[0m
    [32m  ✓[0m[90m should consistently generate the same output[0m
    [32m  ✓[0m[90m should not mutate color levels[0m
[0m  color/Setting[0m
[0m    p5.prototype.colorMode[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should set mode to RGB[0m
    [32m  ✓[0m[90m should correctly set color RGB maxes[0m
    [32m  ✓[0m[90m should set mode to HSL[0m
    [32m  ✓[0m[90m should correctly set color HSL maxes[0m
    [32m  ✓[0m[90m should set mode to HSB[0m
    [32m  ✓[0m[90m should correctly set color HSB maxes[0m
[0m  2D Primitives[0m
[0m    p5.prototype.arc[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m no friendly-err-msg[0m
    [32m  ✓[0m[90m missing param #4, #5[0m
    [32m  ✓[0m[90m wrong param type at #0[0m
[0m    p5.prototype.ellipse[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m no friendly-err-msg[0m
    [32m  ✓[0m[90m missing param #2[0m
    [32m  ✓[0m[90m missing param #2[0m
    [32m  ✓[0m[90m wrong param type at #0[0m
[0m    p5.prototype.line[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m no friendly-err-msg, 2D[0m
    [32m  ✓[0m[90m no friendly-err-msg, 3D[0m
    [32m  ✓[0m[90m missing param #3[0m
    [32m  ✓[0m[90m missing param #4 [0m
    [32m  ✓[0m[90m wrong param type at #1[0m
[0m    p5.prototype.point[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m no friendly-err-msg, 2D[0m
    [32m  ✓[0m[90m no friendly-err-msg, 3D[0m
    [32m  ✓[0m[90m missing param #1[0m
    [32m  ✓[0m[90m wrong param type at #1[0m
[0m    p5.prototype.quad[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m no friendly-err-msg, 2D[0m
    [32m  ✓[0m[90m missing param #7[0m
    [32m  ✓[0m[90m wrong param type at #1[0m
[0m    p5.prototype.rect[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m no friendly-err-msg, format I[0m
    [32m  ✓[0m[90m no friendly-err-msg, format II[0m
    [32m  ✓[0m[90m missing param #3[0m
    [32m  ✓[0m[90m missing param #4[0m
    [32m  ✓[0m[90m wrong param type at #1[0m
[0m    p5.prototype.triangle[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m no friendly-err-msg[0m
    [32m  ✓[0m[90m missing param #5[0m
    [32m  ✓[0m[90m wrong param type at #1[0m
[0m    p5.prototype.square[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m no friendly-err-msg, format I[0m
    [32m  ✓[0m[90m no friendly-err-msg, format II[0m
    [32m  ✓[0m[90m missing param #2[0m
    [32m  ✓[0m[90m wrong param type at #1[0m
[0m    p5.prototype._normalizeArcAngles[0m
    [32m  ✓[0m[90m start/stop both at zero[0m
    [32m  ✓[0m[90m start/stop same but non-zero[0m
    [32m  ✓[0m[90m start/stop both close to zero, start < stop[0m
    [32m  ✓[0m[90m start/stop both close to zero, start > stop[0m
    [32m  ✓[0m[90m start/stop both close to same non-zero, start < stop[0m
    [32m  ✓[0m[90m start/stop both close to same non-zero, start > stop[0m
    [32m  ✓[0m[90m start/stop around zero but not close, start < stop[0m
    [32m  ✓[0m[90m start/stop around zero but not close, start > stop[0m
    [32m  ✓[0m[90m start/stop away from zero and not close, start < stop[0m
    [32m  ✓[0m[90m start/stop away from zero and not close, start > stop[0m
    [32m  ✓[0m[90m scaling correction, quadrants 1 and 3[0m
    [32m  ✓[0m[90m scaling correction, quadrants 2 and 4[0m
[0m  Curves[0m
[0m    p5.prototype.bezier[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m no friendly-err-msg[0m
    [32m  ✓[0m[90m no friendly-err-msg. missing param #6, #7[0m
    [32m  ✓[0m[90m wrong param type at #0[0m
[0m    p5.prototype.bezierPoint[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return a number: missing param #0~4[0m
    [32m  ✓[0m[90m should return the correct point on a Bezier Curve[0m
[0m    p5.prototype.bezierTangent[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return a number: missing param #0~4[0m
    [32m  ✓[0m[90m should return the correct point on a Bezier Curve[0m
[0m    p5.prototype.curve[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m no friendly-err-msg[0m
    [32m  ✓[0m[90m no friendly-err-msg. missing param #6, #7[0m
    [32m  ✓[0m[90m wrong param type at #0[0m
[0m    p5.prototype.curvePoint[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return a number: missing param #0~4[0m
    [32m  ✓[0m[90m should return the correct point on a Catmull-Rom Curve[0m
[0m    p5.prototype.curveTangent[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return a number: missing param #0~4[0m
    [32m  ✓[0m[90m should return the correct point on a Catmull-Rom Curve[0m
[0m  Graphics[0m
[0m    p5.prototype.createGraphics[0m
    [32m  ✓[0m[90m it creates a graphics[0m
[0m    p5.Graphics[0m
    [32m  ✓[0m[90m it has necessary properties[0m
    [32m  ✓[0m[90m it has consistent sizes[0m
    [32m  ✓[0m[90m its canvas has consistent sizes[0m
    [32m  ✓[0m[90m it has a valid pixels array[0m
[0m    p5.Graphics.pixelDensity[0m
    [32m  ✓[0m[90m it can change density[0m
    [32m  ✓[0m[90m it keeps valid sizes after change[0m
    [32m  ✓[0m[90m its canvas keeps valid sizes after change[0m
    [32m  ✓[0m[90m it keeps a valid pixel array after change[0m
[0m    p5.Graphics.resizeCanvas[0m
    [32m  ✓[0m[90m it can call resizeCanvas[0m
    [32m  ✓[0m[90m it resizes properly with pixelDensity 1[0m
    [32m  ✓[0m[90m its canvas resizes properly with pixelDensity 1[0m
    [32m  ✓[0m[90m it resizes properly the pixels array with density 1[0m
    [32m  ✓[0m[90m it resizes properly with pixelDensity 2[0m
    [32m  ✓[0m[90m its canvas resizes properly with pixelDensity 2[0m
    [32m  ✓[0m[90m it resizes properly the pixels array with density 2[0m
[0m  Error Helpers[0m
[0m    validateParameters: Numbers + optional Constant[0m
    [32m  ✓[0m[90m arc(): no friendly-err-msg[0m
    [32m  ✓[0m[90m arc(): missing param #4, #5[0m
    [32m  ✓[0m[90m arc(): missing param #0[0m
    [32m  ✓[0m[90m arc(): missing param #4[0m
    [32m  ✓[0m[90m arc(): missing param #5[0m
    [32m  ✓[0m[90m arc(): missing param #6, no friendly-err-msg[0m
    [32m  ✓[0m[90m arc(): wrong param type at #0[0m
[0m    validateParameters: Numbers + optional Constant[0m
    [32m  ✓[0m[90m rect(): no friendly-err-msg[0m
    [32m  ✓[0m[90m rect(): missing param #3[0m
    [32m  ✓[0m[90m rect(): wrong param type at #0[0m
[0m    validateParameters: class, multi-types + optional Numbers[0m
    [32m  ✓[0m[90m ambientLight(): no friendly-err-msg[0m
[0m    validateParameters: multi-format[0m
    [32m  ✓[0m[90m color(): no friendly-err-msg[0m
    [32m  ✓[0m[90m color(): no friendly-err-msg[0m
    [32m  ✓[0m[90m color(): no friendly-err-msg[0m
    [32m  ✓[0m[90m color(): optional parameter, incorrect type[0m
    [32m  ✓[0m[90m color(): extra parameter[0m
    [32m  ✓[0m[90m color(): incorrect element type[0m
    [32m  ✓[0m[90m color(): incorrect parameter count[0m
[0m    helpForMisusedAtTopLevelCode[0m
    [32m  ✓[0m[90m help for constants is shown[0m[33m (57ms)[0m
    [32m  ✓[0m[90m help for functions is shown[0m
    [32m  ✓[0m[90m help for variables is shown[0m
[0m  Core[0m
    [32m  ✓[0m[90m should define drawContext synchronously[0m
[0m    new p5(sketch, null, true)[0m
[0m    new p5(sketch, null, false)[0m
    [32m  ✓[0m[90m should define drawContext asynchronously[0m
[0m    new p5(sketch, node, true)[0m
    [32m  ✓[0m[90m should define drawContext synchronously[0m
[0m    new p5(sketch, node)[0m
    [32m  ✓[0m[90m should define drawContext asynchronously[0m
[0m    new p5(sketch, true)[0m
    [32m  ✓[0m[90m should define drawContext synchronously[0m
    [32m  ✓[0m[90m should define drawContext asynchronously[0m
[0m    new p5(sketch)[0m
[0m    p5.prototype.registerMethod[0m
    [32m  ✓[0m[90m should register and call "init" methods[0m
[0m    new p5() / global mode[0m
    [32m  ✓[0m[90m is triggered when "setup" is in window[0m[31m (82ms)[0m
    [32m  ✓[0m[90m is triggered when "draw" is in window[0m[33m (61ms)[0m
    [32m  ✓[0m[90m works when p5.js is loaded asynchronously[0m[33m (52ms)[0m
    [32m  ✓[0m[90m works on-demand[0m[33m (44ms)[0m
[0m    p5.prototype._createFriendlyGlobalFunctionBinder[0m
    [32m  ✓[0m[90m should warn when globals already exist[0m
    [32m  ✓[0m[90m should warn when globals are overwritten[0m
    [32m  ✓[0m[90m should allow overwritten globals to be overwritten[0m
    [32m  ✓[0m[90m should allow globals to be deleted[0m
    [32m  ✓[0m[90m should create enumerable globals[0m
    [32m  ✓[0m[90m should not warn about overwriting print()[0m
    [32m  ✓[0m[90m should not warn about overwriting preload methods[0m
    [32m  ✓[0m[90m should not warn about overwriting non-functions[0m
    [32m  ✓[0m[90m instance preload is independent of window[0m[33m (57ms)[0m
[0m  p5.Element[0m
[0m    with no events[0m
    [32m  ✓[0m[90m attaches and gets events[0m
    [32m  ✓[0m[90m attaches mutiple handlers and only latest gets events[0m
    [32m  ✓[0m[90m detaches and doesnt get events[0m
[0m    operating with elemet classes[0m
    [32m  ✓[0m[90m should add class to element[0m
    [32m  ✓[0m[90m should remove class from element with only one class[0m
    [32m  ✓[0m[90m should remove class from element with several classes[0m
    [32m  ✓[0m[90m should return true if element has specified class[0m
    [32m  ✓[0m[90m should return false if element has not specified class[0m
    [32m  ✓[0m[90m should return false if element has class that is partially similar as specified class[0m
    [32m  ✓[0m[90m should toggle specified class on element[0m
[0m  Rendering[0m
[0m    p5.prototype.createCanvas[0m
    [32m  ✓[0m[90m should have correct initial colors[0m
[0m    p5.prototype.resizeCanvas[0m
    [32m  ✓[0m[90m should resize canvas[0m
    [32m  ✓[0m[90m should restore fill color[0m
    [32m  ✓[0m[90m should restore stroke color[0m
    [32m  ✓[0m[90m should restore stroke weight[0m
    [32m  ✓[0m[90m should restore stroke cap[0m
[0m    p5.prototype.blendMode[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should be able to ADD[0m
    [32m  ✓[0m[90m should be able to MULTIPLY[0m
[0m    p5.prototype.setAttributes[0m
    [32m  ✓[0m[90m _glAttributes should be null at start[0m
    [32m  ✓[0m[90m _glAttributes should modify with setAttributes[0m
    [32m  ✓[0m[90m _glAttributes.antialias modify with smooth()[0m
[0m    webgl assertions[0m
    [32m  ✓[0m[90m rotateX() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m rotateY() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m rotateZ() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m camera() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m perspective() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m ortho() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m orbitControl() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m ambientLight() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m directionalLight() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m pointLight() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m lights() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m model() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m createShader() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m shader() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m normalMaterial() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m texture() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m ambientMaterial() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m specularMaterial() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m shininess() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m plane() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m box() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m sphere() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m cylinder() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m cone() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m ellipsoid() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m torus() should throw a WEBGL assertion Error[0m
[0m  Structure[0m
[0m    p5.frameCount[0m
    [32m  ✓[0m[90m starts at zero[0m
    [32m  ✓[0m[90m matches draw calls[0m[31m (237ms)[0m
[0m    p5.prototype.loop and p5.prototype.noLoop[0m
    [32m  ✓[0m[90m noLoop should stop[0m[31m (101ms)[0m
    [32m  ✓[0m[90m loop should restart[0m[31m (101ms)[0m
[0m    p5.prototype.push and p5.prototype.pop[0m
    [32m  ✓[0m[90m leak no state after fill()[0m
    [32m  ✓[0m[90m leak no state after noFill()[0m
    [32m  ✓[0m[90m leak no state after stroke()[0m
    [32m  ✓[0m[90m leak no state after noStroke()[0m
    [32m  ✓[0m[90m leak no state after tint()[0m
    [32m  ✓[0m[90m leak no state after noTint()[0m
    [32m  ✓[0m[90m leak no state after strokeWeight()[0m
    [32m  ✓[0m[90m leak no state after strokeCap()[0m
    [32m  ✓[0m[90m leak no state after strokeJoin()[0m
    [32m  ✓[0m[90m leak no state after imageMode()[0m
    [32m  ✓[0m[90m leak no state after rectMode()[0m
    [32m  ✓[0m[90m leak no state after ellipseMode()[0m
    [32m  ✓[0m[90m leak no state after colorMode()[0m
    [32m  ✓[0m[90m leak no state after textAlign()[0m
    [32m  ✓[0m[90m leak no state after textFont()[0m
    [32m  ✓[0m[90m leak no state after textStyle()[0m
    [32m  ✓[0m[90m leak no state after textSize()[0m
    [32m  ✓[0m[90m leak no state after textLeading()[0m
[0m    p5.prototype.redraw[0m
    [32m  ✓[0m[90m resets the rendering matrix between frames[0m
    [32m  ✓[0m[90m instance redraw is independent of window[0m[31m (1045ms)[0m
[0m    loop[0m
    [32m  ✓[0m[90m loop in setup does not call draw[0m
    [32m  ✓[0m[90m loop in draw does not call draw[0m
[0m  Dictionary Objects[0m
[0m    p5.prototype.stringDict[0m
    [32m  ✓[0m[90m should be created[0m
    [32m  ✓[0m[90m has correct structure[0m
    [32m  ✓[0m[90m should have correct size[0m
    [32m  ✓[0m[90m should add new key-value pairs[0m
    [32m  ✓[0m[90m should add objects[0m
    [32m  ✓[0m[90m should change existing values[0m
    [32m  ✓[0m[90m should clear[0m
[0m    p5.prototype.numberDict[0m
    [32m  ✓[0m[90m should be created[0m
    [32m  ✓[0m[90m has correct structure[0m
    [32m  ✓[0m[90m should have correct size[0m
    [32m  ✓[0m[90m should add new key-value pairs[0m
    [32m  ✓[0m[90m should change existing values[0m
    [32m  ✓[0m[90m should add values together[0m
    [32m  ✓[0m[90m should subtract from value[0m
    [32m  ✓[0m[90m should divide from value[0m
    [32m  ✓[0m[90m should multiply value[0m
    [32m  ✓[0m[90m should find minimum value[0m
    [32m  ✓[0m[90m should find maximum value[0m
    [32m  ✓[0m[90m should clear[0m
[0m  Keyboard Events[0m
[0m    p5.prototype.keyIsPressed[0m
    [32m  ✓[0m[90m keyIsPressed should be a boolean[0m
    [32m  ✓[0m[90m keyIsPressed should be true on key press[0m
    [32m  ✓[0m[90m keyIsPressed should be false on key up[0m
[0m    p5.prototype.isKeyPressed[0m
    [32m  ✓[0m[90m isKeyPressed should be a boolean[0m
    [32m  ✓[0m[90m isKeyPressed should be true on key press[0m
    [32m  ✓[0m[90m isKeyPressed should be false on key up[0m
[0m    p5.prototype.key[0m
    [32m  ✓[0m[90m key should be a string[0m
    [32m  ✓[0m[90m key should return the key pressed[0m
    [32m  ✓[0m[90m key should return the key pressed[0m
    [32m  ✓[0m[90m key should return the key pressed[0m
[0m    p5.prototype.keyCode[0m
    [32m  ✓[0m[90m keyCode should be a number[0m
    [32m  ✓[0m[90m key should return the key pressed[0m
    [32m  ✓[0m[90m key should return the key pressed[0m
[0m    keyPressed[0m
    [32m  ✓[0m[90m keyPressed functions on multiple instances must run once[0m
[0m    keyReleased[0m
    [32m  ✓[0m[90m keyReleased functions on multiple instances must run once[0m
[0m    keyTyped[0m
    [32m  ✓[0m[90m keyTyped functions on multiple instances must run once[0m
[0m  loading images[0m
  [32m  ✓[0m[90m should call successCallback when image loads[0m

  [32m  ✓[0m[90m should call failureCallback when unable to load image[0m
  [32m  ✓[0m[90m should draw image with defaults[0m
  [36m  - Test in preload() with success callback[0m
  [36m  - Test in setup() after preload()[0m
[0m  pixels[0m
[0m    p5.Image.get[0m
    [32m  ✓[0m[90m get(x,y) works with integers[0m
    [32m  ✓[0m[90m get(x,y) returns 0s for out of bounds arguments[0m
    [32m  ✓[0m[90m get() returns a copy when no arguments are supplied[0m
    [32m  ✓[0m[90m get(x,y,w,h) works[0m[31m (216ms)[0m
    [32m  ✓[0m[90m rounds down when given decimal numbers[0m
[0m  Files[0m
  [32m  ✓[0m[90m preload is a Boolean[0m
[0m    httpDo()[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should work when provided with just a path[0m
    [32m  ✓[0m[90m should accept method parameter[0m
    [32m  ✓[0m[90m should accept type parameter[0m
    [32m  ✓[0m[90m should accept method and type parameter together[0m

    [32m  ✓[0m[90m should pass error object to error callback function[0m
    [32m  ✓[0m[90m should return a promise[0m

    [32m  ✓[0m[90m should return a promise that rejects on error[0m
{ status: 404, ok: false }
[0m    loadJSON() in Preload[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return an Object[0m
[0m    loadXML() in Preload[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return an Object[0m
[0m    loadStrings() in Preload[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return an array[0m
[0m    p5.prototype.myp5.loadJSON[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should call callback function if provided[0m
    [32m  ✓[0m[90m should pass an Array to callback function[0m

> p5.js says: It looks like there was a problem loading your json. Try checking if the file path [unit/assets/arr.json] is correct, or running a local server.[https://github.com/processing/p5.js/wiki/Local-server]
    [32m  ✓[0m[90m should call error callback function if provided[0m

> p5.js says: It looks like there was a problem loading your json. Try checking if the file path [unit/assets/arr.json] is correct, or running a local server.[https://github.com/processing/p5.js/wiki/Local-server]
    [32m  ✓[0m[90m should pass error object to error callback function[0m
    [32m  ✓[0m[90m should allow json to override jsonp[0m
[0m    p5.prototype.loadXML[0m
    [32m  ✓[0m[90m should be a function[0m
[0m    p5.prototype.loadStrings[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should call callback function if provided[0m
    [32m  ✓[0m[90m should pass an Array to callback function[0m
    [32m  ✓[0m[90m should include empty strings[0m

> p5.js says: It looks like there was a problem loading your text file. Try checking if the file path [Error: [object ReadableStream]] is correct, or running a local server.[https://github.com/processing/p5.js/wiki/Local-server]
    [32m  ✓[0m[90m should call error callback function if provided[0m

> p5.js says: It looks like there was a problem loading your text file. Try checking if the file path [Error: [object ReadableStream]] is correct, or running a local server.[https://github.com/processing/p5.js/wiki/Local-server]
    [32m  ✓[0m[90m should pass error object to error callback function[0m
[0m    p5.prototype.loadTable[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should load a file without options[0m
    [32m  ✓[0m[90m the loaded file should be correct[0m
    [32m  ✓[0m[90m using the csv option works[0m
    [32m  ✓[0m[90m using the csv and tsv options fails[0m
    [32m  ✓[0m[90m using the header option works[0m
    [32m  ✓[0m[90m using the header and csv options together works[0m
    [32m  ✓[0m[90m CSV files should handle commas within quoted fields[0m
    [32m  ✓[0m[90m CSV files should handle escaped quotes and returns within quoted fields[0m
[0m    p5.prototype.loadXML[0m
    [32m  ✓[0m[90m should be a function[0m
[0m    p5.prototype.loadBytes[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should call callback function if provided[0m

> p5.js says: It looks like there was a problem loading your file. Try checking if the file path [notfound.jpg] is correct, or running a local server.[https://github.com/processing/p5.js/wiki/Local-server]
    [32m  ✓[0m[90m should call error callback function if not found[0m
    [32m  ✓[0m[90m should pass an Object to callback function[0m
    [32m  ✓[0m[90m data.bytes should be an Array/Uint8Array[0m
    [32m  ✓[0m[90m should load correct data[0m
[0m  loadBytes[0m

  [32m  ✓[0m[90m _friendlyFileLoadError is called[0m

> p5.js says: It looks like there was a problem loading your file. Try checking if the file path [404file] is correct, or running a local server.[https://github.com/processing/p5.js/wiki/Local-server]
  [32m  ✓[0m[90m error prevents sketch continuing[0m[33m (51ms)[0m

> p5.js says: It looks like there was a problem loading your file. Try checking if the file path [404file] is correct, or running a local server.[https://github.com/processing/p5.js/wiki/Local-server]
  [32m  ✓[0m[90m error callback is called[0m[33m (54ms)[0m
  [32m  ✓[0m[90m loading correctly triggers setup[0m
  [32m  ✓[0m[90m success callback is called[0m[33m (56ms)[0m
  [32m  ✓[0m[90m returns the correct object[0m
  [32m  ✓[0m[90m passes an object to success callback for object JSON[0m
[0m  loadStrings[0m

  [32m  ✓[0m[90m _friendlyFileLoadError is called[0m

> p5.js says: It looks like there was a problem loading your text file. Try checking if the file path [Error: [object ReadableStream]] is correct, or running a local server.[https://github.com/processing/p5.js/wiki/Local-server]
  [32m  ✓[0m[90m error prevents sketch continuing[0m[33m (55ms)[0m

> p5.js says: It looks like there was a problem loading your text file. Try checking if the file path [Error: [object ReadableStream]] is correct, or running a local server.[https://github.com/processing/p5.js/wiki/Local-server]
  [32m  ✓[0m[90m error callback is called[0m[33m (54ms)[0m
  [32m  ✓[0m[90m loading correctly triggers setup[0m
  [32m  ✓[0m[90m success callback is called[0m
  [32m  ✓[0m[90m returns an array of strings[0m
  [32m  ✓[0m[90m passes an array to success callback[0m
  [32m  ✓[0m[90m should include empty strings[0m
[0m  loadXML[0m

  [32m  ✓[0m[90m _friendlyFileLoadError is called[0m

> p5.js says: It looks like there was a problem loading your XML file. Try checking if the file path [Error: [object ReadableStream]] is correct, or running a local server.[https://github.com/processing/p5.js/wiki/Local-server]
  [32m  ✓[0m[90m error prevents sketch continuing[0m[33m (52ms)[0m

> p5.js says: It looks like there was a problem loading your XML file. Try checking if the file path [Error: [object ReadableStream]] is correct, or running a local server.[https://github.com/processing/p5.js/wiki/Local-server]
  [32m  ✓[0m[90m error callback is called[0m[33m (55ms)[0m
  [32m  ✓[0m[90m loading correctly triggers setup[0m
  [32m  ✓[0m[90m success callback is called[0m[33m (55ms)[0m
  [32m  ✓[0m[90m returns an object with correct data[0m
  [32m  ✓[0m[90m passes an object with correct data[0m
[0m  loadJSON[0m

  [32m  ✓[0m[90m _friendlyFileLoadError is called[0m

> p5.js says: It looks like there was a problem loading your json. Try checking if the file path [404file] is correct, or running a local server.[https://github.com/processing/p5.js/wiki/Local-server]
  [32m  ✓[0m[90m error prevents sketch continuing[0m[33m (55ms)[0m

> p5.js says: It looks like there was a problem loading your json. Try checking if the file path [404file] is correct, or running a local server.[https://github.com/processing/p5.js/wiki/Local-server]
  [32m  ✓[0m[90m error callback is called[0m[33m (55ms)[0m
  [32m  ✓[0m[90m loading correctly triggers setup[0m
  [32m  ✓[0m[90m success callback is called[0m[33m (55ms)[0m
  [32m  ✓[0m[90m returns an object for object JSON.[0m
  [32m  ✓[0m[90m passes an object to success callback for object JSON.[0m
  [36m  - returns an array for array JSON.[0m
  [32m  ✓[0m[90m passes an array to success callback for array JSON.[0m
[0m  loadTable[0m

  [32m  ✓[0m[90m _friendlyFileLoadError is called[0m

> p5.js says: It looks like there was a problem loading your table file. Try checking if the file path [404file] is correct, or running a local server.[https://github.com/processing/p5.js/wiki/Local-server]
{ status: 404, ok: false }
  [32m  ✓[0m[90m error prevents sketch continuing[0m[33m (51ms)[0m

> p5.js says: It looks like there was a problem loading your table file. Try checking if the file path [404file] is correct, or running a local server.[https://github.com/processing/p5.js/wiki/Local-server]
  [32m  ✓[0m[90m error callback is called[0m[33m (55ms)[0m
  [32m  ✓[0m[90m loading correctly triggers setup[0m
  [32m  ✓[0m[90m success callback is called[0m[33m (55ms)[0m
  [32m  ✓[0m[90m returns an object with correct data[0m
  [32m  ✓[0m[90m passes an object to success callback for object JSON[0m
  [32m  ✓[0m[90m csv option returns the correct data[0m
  [32m  ✓[0m[90m using csv and tsv returns an error[0m
  [32m  ✓[0m[90m using the header option works[0m
  [32m  ✓[0m[90m allows the header and csv options together[0m
  [32m  ✓[0m[90m CSV files should handle commas within quoted fields[0m
  [32m  ✓[0m[90m CSV files should handle escaped quotes and returns within quoted fields[0m
[0m  loadImage[0m

  [32m  ✓[0m[90m _friendlyFileLoadError is called[0m
  [32m  ✓[0m[90m error prevents sketch continuing[0m

> p5.js says: It looks like there was a problem loading your image. Try checking if the file path [http://localhost:9001/test/404file] is correct, hosting the image online, or running a local server.[https://github.com/processing/p5.js/wiki/Local-server]
> p5.js says: It looks like there was a problem loading your image. Try checking if the file path [http://localhost:9001/test/404file] is correct, hosting the image online, or running a local server.[https://github.com/processing/p5.js/wiki/Local-server]
{ isTrusted: true }
  [32m  ✓[0m[90m error callback is called[0m[33m (53ms)[0m
  [32m  ✓[0m[90m loading correctly triggers setup[0m
  [32m  ✓[0m[90m success callback is called[0m[33m (52ms)[0m
  [32m  ✓[0m[90m returns an object with correct data[0m
  [32m  ✓[0m[90m passes an object with correct data to callback[0m
[0m  loadModel[0m

  [32m  ✓[0m[90m _friendlyFileLoadError is called[0m

> p5.js says: It looks like there was a problem loading your text file. Try checking if the file path [Error: [object ReadableStream]] is correct, or running a local server.[https://github.com/processing/p5.js/wiki/Local-server]
  [32m  ✓[0m[90m error prevents sketch continuing[0m[33m (52ms)[0m

> p5.js says: It looks like there was a problem loading your text file. Try checking if the file path [Error: [object ReadableStream]] is correct, or running a local server.[https://github.com/processing/p5.js/wiki/Local-server]
  [32m  ✓[0m[90m error callback is called[0m[33m (54ms)[0m
  [32m  ✓[0m[90m loading correctly triggers setup[0m
  [32m  ✓[0m[90m success callback is called[0m[31m (77ms)[0m
  [32m  ✓[0m[90m returns an object with correct data[0m[33m (45ms)[0m
  [32m  ✓[0m[90m passes an object with correct data to callback[0m
[0m  loadShader[0m

  [32m  ✓[0m[90m _friendlyFileLoadError is called[0m

> p5.js says: It looks like there was a problem loading your text file. Try checking if the file path [Error: [object ReadableStream]] is correct, or running a local server.[https://github.com/processing/p5.js/wiki/Local-server]
{ status: 404, ok: false }
  [32m  ✓[0m[90m error with vert prevents sketch continuing[0m[33m (54ms)[0m

> p5.js says: It looks like there was a problem loading your text file. Try checking if the file path [Error: [object ReadableStream]] is correct, or running a local server.[https://github.com/processing/p5.js/wiki/Local-server]
{ status: 404, ok: false }
  [32m  ✓[0m[90m error with frag prevents sketch continuing[0m[33m (52ms)[0m

> p5.js says: It looks like there was a problem loading your text file. Try checking if the file path [Error: [object ReadableStream]] is correct, or running a local server.[https://github.com/processing/p5.js/wiki/Local-server]
  [32m  ✓[0m[90m error callback is called for vert[0m[33m (57ms)[0m

> p5.js says: It looks like there was a problem loading your text file. Try checking if the file path [Error: [object ReadableStream]] is correct, or running a local server.[https://github.com/processing/p5.js/wiki/Local-server]
  [32m  ✓[0m[90m error callback is called for frag[0m[33m (55ms)[0m
  [32m  ✓[0m[90m loading correctly triggers setup[0m
  [32m  ✓[0m[90m success callback is called[0m[33m (59ms)[0m
  [32m  ✓[0m[90m returns an object with correct data[0m
  [32m  ✓[0m[90m passes an object with correct data to callback[0m
[0m  Calculation[0m
[0m    p5.prototype.abs[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return a number[0m
    [32m  ✓[0m[90m should return an absolute value[0m
[0m    p5.prototype.ceil[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return ceil value given negative value[0m
    [32m  ✓[0m[90m should return a ceil value given positive value[0m
    [32m  ✓[0m[90m should return same number[0m
[0m    p5.prototype.dist[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return a number[0m
    [32m  ✓[0m[90m should return correct distance[0m
    [32m  ✓[0m[90m should return positive  distance[0m
    [32m  ✓[0m[90m should return correct distance[0m
    [32m  ✓[0m[90m should return positive  distance[0m
    [32m  ✓[0m[90m should not underflow[0m
    [32m  ✓[0m[90m should not overflow[0m
    [32m  ✓[0m[90m should return 0 for identical 2D points[0m
    [32m  ✓[0m[90m should return 0 for identical 3D points[0m
[0m    p5.prototype.exp[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return exp value given negative value[0m
    [32m  ✓[0m[90m should return exp value given positive value[0m
    [32m  ✓[0m[90m should return 1[0m
[0m    p5.prototype.floor[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return floor value given negative value[0m
    [32m  ✓[0m[90m should return a floor value given positive value[0m
    [32m  ✓[0m[90m should return same number[0m
[0m    p5.prototype.lerp[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return start[0m
    [32m  ✓[0m[90m should return average[0m
    [32m  ✓[0m[90m should return stop[0m
[0m    p5.prototype.log[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return log value given negative value[0m
    [32m  ✓[0m[90m should return log value given positive value[0m
    [32m  ✓[0m[90m should return 0[0m
[0m    p5.prototype.mag[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return a number[0m
    [32m  ✓[0m[90m should return correct magitude[0m
    [32m  ✓[0m[90m should return positive magnitude given negative inputs[0m
[0m    p5.prototype.map[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return a number[0m
    [32m  ✓[0m[90m should return scaled value[0m
    [32m  ✓[0m[90m should extrapolate by default[0m
    [32m  ✓[0m[90m shaould clamp correctly[0m
[0m    p5.prototype.max[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return larger left argument[0m
    [32m  ✓[0m[90m should return larger right argument[0m
    [32m  ✓[0m[90m should return single value[0m
    [32m  ✓[0m[90m should return larger value from array[0m
    [32m  ✓[0m[90m should return larger value from array[0m
    [32m  ✓[0m[90m should return single value from array[0m
[0m    p5.prototype.min[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return smaller right  argument[0m
    [32m  ✓[0m[90m should return smaller left  argument[0m
    [32m  ✓[0m[90m should return single value[0m
    [32m  ✓[0m[90m should return smaller value from array[0m
    [32m  ✓[0m[90m should return smaller value from array[0m
    [32m  ✓[0m[90m should return single value from array[0m
[0m    p5.prototype.norm[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return scaled decimal value[0m
    [32m  ✓[0m[90m should be a function[0m
[0m    p5.prototype.constrain[0m
    [32m  ✓[0m[90m should return same number[0m
    [32m  ✓[0m[90m should return lower bound[0m
    [32m  ✓[0m[90m should return upper bound[0m
[0m    p5.prototype.sq[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return sauare value[0m
    [32m  ✓[0m[90m should return squared value given negative number[0m
[0m    p5.prototype.pow[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return pow for negative exponential[0m
    [32m  ✓[0m[90m should return pow for positive exponential[0m
[0m    p5.prototype.round[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should round down[0m
    [32m  ✓[0m[90m should round up from midpoint[0m
    [32m  ✓[0m[90m should round up[0m
[0m    p5.prototype.sqrt[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return square root[0m
[0m  Noise[0m
    [32m  ✓[0m[90m should return a number[0m
[0m    p5.prototype.noise[0m
    [32m  ✓[0m[90m should return a number 0 < n < 1[0m
[0m    p5.prototype.noiseSeed[0m
    [32m  ✓[0m[90m should return a number 0 < n < 1[0m
    [32m  ✓[0m[90m should return same sequence of numbers[0m
[0m  p5.Vector[0m
[0m    p5.prototype.createVector()[0m
    [32m  ✓[0m[90m should create instance of p5.Vector[0m
    [32m  ✓[0m[90m should have x, y, z be initialized to 0[0m
[0m    p5.prototype.createVector()[0m
    [32m  ✓[0m[90m should have x, y, z be initialized to 1,2,3[0m
[0m    new p5.Vector()[0m
    [32m  ✓[0m[90m should set constant to DEGREES[0m
    [32m  ✓[0m[90m should have x, y, z be initialized to 0[0m
[0m    new p5.Vector(1, 2, 3)[0m
    [32m  ✓[0m[90m should have x, y, z be initialized to 1,2,3[0m
[0m    new p5.Vector(1,2,undefined)[0m
    [32m  ✓[0m[90m should have x, y, z be initialized to 1,2,0[0m
[0m    p5.prototype.rotate() RADIANS[0m
    [32m  ✓[0m[90m should have x, y, z rotated to 0, -1, 0 (RADIANS)[0m
[0m    p5.prototype.rotate() DEGREES[0m
    [32m  ✓[0m[90m should have x, y, z rotated to 0, -1, 0 (DEGREES)[0m
[0m    p5.prototype.angleBetween()[0m
    [32m  ✓[0m[90m should not trip on rounding issues in 2D space[0m
    [32m  ✓[0m[90m should not trip on rounding issues in 3D space[0m
    [32m  ✓[0m[90m should return NaN for zero vector[0m
[0m    set()[0m
[0m      with p5.Vector[0m
      [32m  ✓[0m[90m should have x, y, z be initialized to the vector's x, y, z[0m
[0m      with Array[0m
      [32m  ✓[0m[90m [2,4] should set x === 2, y === 4, z === 0[0m
      [32m  ✓[0m[90m should have x, y, z be initialized to the array's 0,1,2 index[0m
[0m      set(1,2,3)[0m
      [32m  ✓[0m[90m should have x, y, z be initialized to the 1, 2, 3[0m
[0m    copy()[0m
    [32m  ✓[0m[90m should not return the same instance[0m
    [32m  ✓[0m[90m should return the calling object's x, y, z[0m
[0m    add()[0m
[0m      with p5.Vector[0m
      [32m  ✓[0m[90m should add x, y, z  from the vector argument[0m
[0m      with Array[0m
      [32m  ✓[0m[90m should add the array's 0,1,2 index[0m
[0m        add([2, 4])[0m
        [32m  ✓[0m[90m should add the x and y components[0m
[0m      add(3,5)[0m
      [32m  ✓[0m[90m should add the x and y components[0m
[0m      add(2,3,4)[0m
      [32m  ✓[0m[90m should add the x, y, z components[0m
[0m      p5.Vector.add(v1, v2)[0m
      [32m  ✓[0m[90m should return neither v1 nor v2[0m
      [32m  ✓[0m[90m should be sum of the two p5.Vectors[0m
[0m    sub()[0m
      [32m  ✓[0m[90m should sub x, y, z  from the vector argument[0m
[0m      with p5.Vector[0m
[0m      with Array[0m
      [32m  ✓[0m[90m should substract from the array's 0,1,2 index[0m
[0m        sub([2, 4])[0m
        [32m  ✓[0m[90m should sub the x and y components[0m
[0m      sub(3,5)[0m
      [32m  ✓[0m[90m should substract the x and y components[0m
[0m      sub(2,3,4)[0m
      [32m  ✓[0m[90m should substract the x, y, z components[0m
[0m      p5.Vector.sub(v1, v2)[0m
      [32m  ✓[0m[90m should return neither v1 nor v2[0m
      [32m  ✓[0m[90m should be v1 - v2[0m
[0m    mult()[0m
    [32m  ✓[0m[90m should return the same object[0m
p5.Vector.prototype.mult: n is undefined or not a finite number
    [32m  ✓[0m[90m should not change x, y, z if no argument is given[0m
p5.Vector.prototype.mult: n is undefined or not a finite number
    [32m  ✓[0m[90m should not change x, y, z if n is not a finite number[0m
[0m      with scalar[0m
      [32m  ✓[0m[90m multiply the x, y, z with the scalar[0m
[0m      p5.Vector.mult(v, n)[0m
      [32m  ✓[0m[90m should return a new p5.Vector[0m
      [32m  ✓[0m[90m should multiply the scalar[0m
[0m    div()[0m
    [32m  ✓[0m[90m should return the same object[0m
p5.Vector.prototype.div: n is undefined or not a finite number
    [32m  ✓[0m[90m should not change x, y, z if no argument is given[0m
p5.Vector.prototype.div: n is undefined or not a finite number
    [32m  ✓[0m[90m should not change x, y, z if n is not a finite number[0m
[0m      with scalar[0m
      [32m  ✓[0m[90m divide the x, y, z with the scalar[0m
p5.Vector.prototype.div: divide by 0
      [32m  ✓[0m[90m should not change x, y, z if n is 0[0m
[0m      p5.Vector.div(v, n)[0m
      [32m  ✓[0m[90m should not be undefined[0m
      [32m  ✓[0m[90m should return a new p5.Vector[0m
      [32m  ✓[0m[90m should divide the scalar[0m
[0m    dot[0m
    [32m  ✓[0m[90m should return a number[0m
[0m      with p5.Vector[0m
      [32m  ✓[0m[90m should be the dot product of the vector[0m
[0m      with x, y, z[0m
      [32m  ✓[0m[90m should be the dot product with x, y[0m
      [32m  ✓[0m[90m should be the dot product with x, y, z[0m
[0m      p5.Vector.dot(v, n)[0m
      [32m  ✓[0m[90m should return a number[0m
      [32m  ✓[0m[90m should be the dot product of the two vectors[0m
[0m    cross[0m
    [32m  ✓[0m[90m should return a new product[0m
[0m      with p5.Vector[0m
      [32m  ✓[0m[90m should cross x, y, z  from the vector argument[0m
[0m      p5.Vector.cross(v1, v2)[0m
      [32m  ✓[0m[90m should not be undefined[0m
      [32m  ✓[0m[90m should return neither v1 nor v2[0m
      [32m  ✓[0m[90m should the cross product of v1 and v2[0m
[0m    dist[0m
    [32m  ✓[0m[90m should return a number[0m
    [32m  ✓[0m[90m should return distance between two vectors[0m
    [32m  ✓[0m[90m should return distance between two vectors[0m
    [32m  ✓[0m[90m should be commutative[0m
[0m    p5.Vector.dist(v1, v2)[0m
    [32m  ✓[0m[90m should return a number[0m
    [32m  ✓[0m[90m should be commutative[0m
[0m    normalize[0m
    [32m  ✓[0m[90m should return the same object[0m
[0m      with unit vector[0m
      [32m  ✓[0m[90m should not change the vector[0m
[0m      with 2,2,1[0m
      [32m  ✓[0m[90m should normalize to 0.66,0.66,0.33[0m
[0m    limit[0m
    [32m  ✓[0m[90m should return the same object[0m
[0m      with a vector larger than the limit[0m
      [32m  ✓[0m[90m should limit the vector[0m
[0m      with a vector smaller than the limit[0m
      [32m  ✓[0m[90m should not limit the vector[0m
[0m    setMag[0m
    [32m  ✓[0m[90m should return the same object[0m
    [32m  ✓[0m[90m should set the magnitude of the vector[0m
    [32m  ✓[0m[90m should set the magnitude of the vector[0m
[0m    heading[0m
    [32m  ✓[0m[90m should return a number[0m
    [32m  ✓[0m[90m heading for vector pointing right is 0[0m
    [32m  ✓[0m[90m heading for vector pointing down is PI/2[0m
    [32m  ✓[0m[90m heading for vector pointing left is PI[0m
[0m    rotate[0m
    [32m  ✓[0m[90m should return the same object[0m
    [32m  ✓[0m[90m should rotate the vector[0m
    [32m  ✓[0m[90m should rotate the vector[0m
[0m    lerp[0m
    [32m  ✓[0m[90m should return the same object[0m
[0m      with x, y, z, amt[0m
      [32m  ✓[0m[90m should lerp x by amt[0m
      [32m  ✓[0m[90m should lerp y by amt[0m
      [32m  ✓[0m[90m should lerp z by amt[0m
[0m      with no amt[0m
      [32m  ✓[0m[90m should assume 0 amt[0m
[0m    p5.Vector.lerp(v1, v2, amt)[0m
    [32m  ✓[0m[90m should not be undefined[0m
    [32m  ✓[0m[90m should be a p5.Vector[0m
    [32m  ✓[0m[90m should return neither v1 nor v2[0m
    [32m  ✓[0m[90m should res to be [1, 1, 1][0m
[0m    p5.Vector.fromAngle(angle)[0m
    [32m  ✓[0m[90m should be a p5.Vector with values (0,1)[0m
[0m    p5.Vector.random2D()[0m
    [32m  ✓[0m[90m should be a unit p5.Vector[0m
[0m    p5.Vector.random3D()[0m
    [32m  ✓[0m[90m should be a unit p5.Vector[0m
[0m    v1.angleBetween(v2)[0m
    [32m  ✓[0m[90m should be a Number[0m
[0m      with [1,0,0] and [2,2,0][0m
      [32m  ✓[0m[90m should be 45 deg difference[0m
[0m      with [2,0,0] and [-2,0,0][0m
      [32m  ✓[0m[90m should be 180 deg difference[0m
[0m      with [2,0,0] and [-2,-2,0][0m
      [32m  ✓[0m[90m should be 135 deg difference[0m
      [32m  ✓[0m[90m should be commutative[0m
    [32m  ✓[0m[90m should return an array[0m
[0m    array[0m
    [32m  ✓[0m[90m should return an with the x y and z components[0m
[0m  Random[0m
[0m    p5.prototype.random[0m
[0m      random()[0m
      [32m  ✓[0m[90m should return a number[0m
      [32m  ✓[0m[90m should return a number 0 <= n < 1[0m
      [32m  ✓[0m[90m should return same sequence of numbers[0m
[0m      random(5)[0m
      [32m  ✓[0m[90m should return a number 0 <= n < 5[0m
[0m      random(1, 10)[0m
      [32m  ✓[0m[90m should return a number 1 <= n < 10[0m
[0m      random(["apple", "pear", "orange", "grape"])[0m
      [32m  ✓[0m[90m should return a fruit[0m
[0m  Trigonometry[0m
[0m    p5.prototype.angleMode[0m
    [32m  ✓[0m[90m should set constant to DEGREES[0m
    [32m  ✓[0m[90m should set constant to RADIANS[0m
    [32m  ✓[0m[90m should always be RADIANS or DEGREES[0m
[0m    p5.prototype.degrees[0m
    [32m  ✓[0m[90m should return the angle in radians when angleMode is DEGREES[0m
    [32m  ✓[0m[90m should return the angle in radians when angleMode is RADIANS[0m
[0m    p5.prototype.radians[0m
    [32m  ✓[0m[90m should return the angle in degrees when angleMode is RADIANS[0m
    [32m  ✓[0m[90m should return the angle in degrees when angleMode is DEGREES[0m
[0m    p5.prototype.asin[0m
    [32m  ✓[0m[90m should handle degrees[0m
    [32m  ✓[0m[90m should handle radians[0m
[0m    p5.prototype.atan[0m
    [32m  ✓[0m[90m should handle degrees[0m
    [32m  ✓[0m[90m should handle radians[0m
[0m    p5.prototype.acos[0m
    [32m  ✓[0m[90m should handle degrees[0m
    [32m  ✓[0m[90m should handle radians[0m
[0m    p5.prototype.sin[0m
    [32m  ✓[0m[90m should handle degrees[0m
    [32m  ✓[0m[90m should handle radians[0m
[0m    p5.prototype.cos[0m
    [32m  ✓[0m[90m should handle degrees[0m
    [32m  ✓[0m[90m should handle radians[0m
[0m    p5.prototype.tan[0m
    [32m  ✓[0m[90m should handle degrees[0m
    [32m  ✓[0m[90m should handle radians[0m
[0m    p5.prototype.atan2[0m
    [32m  ✓[0m[90m should handle degrees[0m
    [32m  ✓[0m[90m should handle radians[0m
[0m  loadFont[0m

  [32m  ✓[0m[90m _friendlyFileLoadError is called[0m

> p5.js says: It looks like there was a problem loading your font. Try checking if the file path [404file] is correct, hosting the font online, or running a local server.[https://github.com/processing/p5.js/wiki/Local-server]
  [32m  ✓[0m[90m error prevents sketch continuing[0m[31m (183ms)[0m

> p5.js says: It looks like there was a problem loading your font. Try checking if the file path [404file] is correct, hosting the font online, or running a local server.[https://github.com/processing/p5.js/wiki/Local-server]
  [32m  ✓[0m[90m error callback is called[0m[31m (84ms)[0m
  [32m  ✓[0m[90m loading correctly triggers setup[0m
  [32m  ✓[0m[90m success callback is called[0m[31m (88ms)[0m
  [32m  ✓[0m[90m returns a p5.Font object[0m
  [32m  ✓[0m[90m passes a p5.Font object to success callback[0m[33m (66ms)[0m
[0m  Array[0m
[0m    p5.prototype.append[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return an array with appended value[0m
[0m    p5.prototype.arrayCopy[0m
    [32m  ✓[0m[90m should be a function[0m
[0m      src, dst[0m
      [32m  ✓[0m[90m should return fully copied array[0m
[0m      src, dst, len[0m
      [32m  ✓[0m[90m should return an array with first 2 elements copied over[0m
      [32m  ✓[0m[90m should return an array with first 4 elements copied over[0m
[0m      src, srcPosition, dst, dstPosition, length[0m
      [32m  ✓[0m[90m should copy src[1 - 2] to dst[0 - 1][0m
      [32m  ✓[0m[90m should copy src[1 - 2] to dst [1 - 2][0m
      [32m  ✓[0m[90m should copy src[3 - 4] to dst[0 - 1][0m
[0m    p5.prototype.concat[0m
    [32m  ✓[0m[90m should concat empty arrays[0m
    [32m  ✓[0m[90m should concat arrays[0m
[0m    p5.prototype.reverse[0m
    [32m  ✓[0m[90m should reverse empty array[0m
    [32m  ✓[0m[90m should reverse array[0m
[0m    p5.prototype.shorten[0m
    [32m  ✓[0m[90m should not have error for shortening empty array[0m
    [32m  ✓[0m[90m should shorten array[0m
[0m    p5.prototype.sort[0m
    [32m  ✓[0m[90m should not have error for sorting empty array[0m
    [32m  ✓[0m[90m should sort alphabetic array lexicographically[0m
    [32m  ✓[0m[90m should sort numerical array from smallest to largest[0m
    [32m  ✓[0m[90m should sort numerical array from smallest to largest for only first 2 elements[0m
[0m    p5.prototype.splice[0m
    [32m  ✓[0m[90m should insert 4 into position 1[0m
    [32m  ✓[0m[90m should splice in array of values[0m
[0m    p5.prototype.subset[0m
    [32m  ✓[0m[90m should get subset from index 1 to end[0m
    [32m  ✓[0m[90m should subset arr[1 - 2][0m
[0m  String functions[0m
[0m    p5.prototype.join[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return joined string[0m
[0m    p5.prototype.match[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return correct index of match strings[0m
[0m    p5.prototype.matchAll[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return correct array of strings[0m
[0m    p5.prototype.nf[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return correct string[0m
    [32m  ✓[0m[90m should return correct string[0m
[0m    p5.prototype.nfc[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return correct string[0m
    [32m  ✓[0m[90m should return correct string[0m
[0m    p5.prototype.nfp[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return correct string[0m
    [32m  ✓[0m[90m should return correct string[0m
[0m    p5.prototype.nfs[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return correct string[0m
    [32m  ✓[0m[90m should return correct string[0m
[0m    p5.prototype.split[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return correct index of match strings[0m
[0m    p5.prototype.splitTokens[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return correct index of match strings[0m
[0m    p5.prototype.trim[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return correct strings[0m
[0m  time and date[0m
    [32m  ✓[0m[90m should be a function[0m
[0m    p5.prototype.year[0m
    [32m  ✓[0m[90m should return this year[0m
[0m    p5.prototype.day[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return todays day[0m
[0m    p5.prototype.month[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return today's month[0m
[0m    p5.prototype.hour[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return this hour[0m
[0m    p5.prototype.second[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return this second[0m
[0m    p5.prototype.minute[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return a number that is this minute[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m result should be a number[0m
[0m    p5.prototype.millis[0m
    [32m  ✓[0m[90m result should be greater than running time[0m[33m (50ms)[0m
    [32m  ✓[0m[90m result should be > newResult[0m[33m (50ms)[0m
[0m  p5.Matrix[0m
[0m    construction[0m
    [32m  ✓[0m[90m new p5.Matrix()[0m
    [32m  ✓[0m[90m new p5.Matrix(array)[0m
    [32m  ✓[0m[90m new p5.Matrix(mat3)[0m
    [32m  ✓[0m[90m identity()[0m
[0m    set[0m
    [32m  ✓[0m[90m p5.Matrix[0m
    [32m  ✓[0m[90m array[0m
    [32m  ✓[0m[90m arguments[0m
[0m    get / copy[0m
    [32m  ✓[0m[90m get[0m
    [32m  ✓[0m[90m copy[0m
[0m    mult[0m
    [32m  ✓[0m[90m self[0m
    [32m  ✓[0m[90m p5.Matrix[0m
    [32m  ✓[0m[90m array[0m
    [32m  ✓[0m[90m arguments[0m
[0m    apply[0m
    [32m  ✓[0m[90m self[0m
    [32m  ✓[0m[90m p5.Matrix[0m
    [32m  ✓[0m[90m array[0m
    [32m  ✓[0m[90m arguments[0m
[0m    scale[0m
    [32m  ✓[0m[90m p5.Vector[0m
    [32m  ✓[0m[90m array[0m
    [32m  ✓[0m[90m arguments[0m
[0m    rotate[0m
    [32m  ✓[0m[90m p5.Vector[0m
    [32m  ✓[0m[90m array[0m
    [32m  ✓[0m[90m arguments[0m
[0m  p5.Camera[0m
[0m    createCamera()[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m creates a p5.Camera object[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m createCamera attaches p5.Camera to renderer[0m
[0m    Rotation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Pan() with positive parameter sets correct matrix w/o changing     eyeXYZ or upXYZ[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Pan() with negative parameter sets correct matrix w/o changing     eyeXYZ or upXYZ[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Pan(0) sets correct matrix w/o changing eyeXYZ or upXYZ[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Tilt() with positive parameter sets correct Matrix w/o     changing eyeXYZ[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Tilt() with negative parameter sets correct matrix w/o     changing eyeXYZ[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Tilt(0) sets correct matrix w/o changing eyeXYZ[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m LookAt() should set centerXYZ without changing eyeXYZ or     upXYZ[0m
[0m    Rotation with angleMode(DEGREES)[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Pan() with positive parameter sets correct matrix w/o changing     eyeXYZ or upXYZ[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Tilt() with positive parameter sets correct Matrix w/o     changing eyeXYZ[0m
[0m    Position / Orientation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Move() with positive parameters sets correct matrix[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Move() with negative parameters sets correct matrix[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Move(0,0,0) sets correct matrix[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m SetPosition() with positive parameters sets correct matrix[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m SetPosition() with negative parameters sets correct matrix[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m SetPosition(0,0,0) sets correct matrix[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m _orbit(1,0,0) sets correct matrix[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m _orbit(0,1,0) sets correct matrix[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m _orbit(0,0,1) sets correct matrix[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m _orbit(-1,0,0) sets correct matrix[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m _orbit(0,-1,0) sets correct matrix[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m _orbit(0,0,-1) sets correct matrix[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m _orbit() ensures altitude phi <= PI[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m _orbit() ensures altitude phi > 0[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m _orbit() ensures radius > 0[0m
[0m      Camera()[0m
p5.RendererGL: enabled webgl context
      [32m  ✓[0m[90m Camera() with positive parameters sets eye, center, and       up XYZ properties[0m
p5.RendererGL: enabled webgl context
      [32m  ✓[0m[90m Camera() with negative parameters sets eye, center, and       up XYZ properties[0m
[0m    Projection[0m
[0m      ortho()[0m
p5.RendererGL: enabled webgl context
      [32m  ✓[0m[90m ortho() sets renderer uPMatrix[0m
p5.RendererGL: enabled webgl context
      [32m  ✓[0m[90m ortho() sets projection matrix correctly[0m
p5.RendererGL: enabled webgl context
      [32m  ✓[0m[90m ortho() with no parameters specified (sets default)[0m
[0m      perspective()[0m
p5.RendererGL: enabled webgl context
      [32m  ✓[0m[90m perspective() sets renderer uPMatrix[0m
p5.RendererGL: enabled webgl context
      [32m  ✓[0m[90m perspective() sets projection matrix correctly[0m
p5.RendererGL: enabled webgl context
      [32m  ✓[0m[90m perspective() with no parameters specified (sets default)[0m
[0m    Helper Functions[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m copy() returns a new p5.Camera object[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m _getLocalAxes() returns three normalized, orthogonal vectors[0m
[0m    RendererGL Current Camera[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m _isActive() returns true for a camera created with createCamera(),     and false for another p5.Camera[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m setCamera() correctly sets RendererGL current camera[0m
p5.RendererGL: enabled webgl context
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Camera's Renderer is correctly set after setAttributes[0m
[0m  p5.RendererGL[0m
[0m    createCanvas(w, h, WEBGL)[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m creates a p5.RendererGL renderer[0m
[0m    default stroke shader[0m
    [32m  ✓[0m[90m check activate and deactivating fill and stroke[0m
[0m    push() and pop() work in WEBGL Mode[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m push/pop and translation works as expected in WEBGL Mode[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m push/pop and directionalLight() works[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m push/pop and ambientLight() works[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m push/pop and pointLight() works[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m push/pop and pointLight() works[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m push/pop and texture() works[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m push/pop and shader() works with fill[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m push/pop builds/unbuilds stack properly[0m
[0m    loadpixels()[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m loadPixels color check[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m get() singlePixel color and size, with loadPixels[0m
[0m    get()[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m get() size check[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m get() can create p5.Image[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m get() singlePixel color and size[0m
[0m    blendMode()[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m blendMode sets _curBlendMode correctly[0m
p5.RendererGL: enabled webgl context
BURN, OVERLAY, HARD_LIGHT, SOFT_LIGHT, and DODGE only work for blendMode in 2D mode.
BURN, OVERLAY, HARD_LIGHT, SOFT_LIGHT, and DODGE only work for blendMode in 2D mode.
BURN, OVERLAY, HARD_LIGHT, SOFT_LIGHT, and DODGE only work for blendMode in 2D mode.
BURN, OVERLAY, HARD_LIGHT, SOFT_LIGHT, and DODGE only work for blendMode in 2D mode.
BURN, OVERLAY, HARD_LIGHT, SOFT_LIGHT, and DODGE only work for blendMode in 2D mode.
    [32m  ✓[0m[90m blendMode doesnt change when mode unavailable in 3D[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m blendModes change pixel colors as expected[0m[31m (704ms)[0m
[0m  p5.Shader[0m
[0m    Shader[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Light Shader[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Color Shader definition[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Immediate Mode Shader definition[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Normal Shader definition[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Color Shader is set after fill()[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Normal Shader is set after normalMaterial()[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Light shader set after ambientMaterial()[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Light shader set after specularMaterial()[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Able to setUniform empty arrays[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Able to set shininess[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Shader is reset after resetShader is called[0m
[0m  p5.Texture[0m
[0m    p5.Texture[0m
p5.RendererGL: enabled webgl context
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Create and cache a single texture with p5.Image[0m
p5.RendererGL: enabled webgl context
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Create and cache multiple p5.Image textures[0m
p5.RendererGL: enabled webgl context
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Set filter mode to linear[0m
p5.RendererGL: enabled webgl context
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Set filter mode to nearest[0m
p5.RendererGL: enabled webgl context
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Set wrap mode to clamp[0m
p5.RendererGL: enabled webgl context
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Set wrap mode to repeat[0m
p5.RendererGL: enabled webgl context
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Set wrap mode to mirror[0m
p5.RendererGL: enabled webgl context
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Set textureMode to NORMAL[0m
p5.RendererGL: enabled webgl context
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Set textureMode to IMAGE[0m
p5.RendererGL: enabled webgl context
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Set global wrap mode to clamp[0m
p5.RendererGL: enabled webgl context
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Set global wrap mode to repeat[0m
p5.RendererGL: enabled webgl context
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Set global wrap mode to mirror[0m
[0m  WebGL immediate mode shapes[0m
p5.RendererGL: enabled webgl context
  [32m  ✓[0m[90m fills concave beginShape(CLOSE) polygons without triangle-fan artifacts[0m[31m (379ms)[0m
p5.RendererGL: enabled webgl context
  [32m  ✓[0m[90m fills reversed concave beginShape(CLOSE) polygons without artifacts[0m[31m (208ms)[0m
p5.RendererGL: enabled webgl context
  [32m  ✓[0m[90m keeps explicit TRIANGLE_FAN behavior[0m[31m (195ms)[0m
[0m  Test in preload() with success callback[0m
  [32m  ✓[0m[90m Load asynchronously and use success callback[0m
[0m  setup() after preload() with success callback[0m
  [32m  ✓[0m[90m should be loaded if preload() finished[0m
[0m  setup() after preload() without success callback[0m
  [32m  ✓[0m[90m should be loaded now preload() finished[0m
[92m [0m[32m 908 passing[0m[90m (10s)[0m
[36m [0m[36m 3 pending[0m
[0m[0m
[0m  DOM[0m
[0m    p5.prototype.select[0m
    [32m  ✓[0m[90m should find elements by ID[0m
    [32m  ✓[0m[90m should return null when elements by ID are not found[0m
    [32m  ✓[0m[90m should find elements by class[0m
    [32m  ✓[0m[90m should return null when elements by class are not found[0m
    [32m  ✓[0m[90m should find elements by tag name[0m
    [32m  ✓[0m[90m should return null when elements by tag name are not found[0m
    [32m  ✓[0m[90m should create an empty node when no html is provided[0m
[0m    p5.prototype.createButton[0m
    [32m  ✓[0m[90m mousePressed works[0m
[0m    p5.prototype.drop[0m
    [32m  ✓[0m[90m drop fires multiple events[0m
[0m  color/p5.ColorConversion[0m
[0m    rgbaToHSBA[0m
    [32m  ✓[0m[90m rgba converts to hsba[0m
[0m    hsbaToRGBA[0m
    [32m  ✓[0m[90m hsba converts to rgba[0m
    [32m  ✓[0m[90m handles maximum hue value[0m
[0m    hslaToRGBA[0m
    [32m  ✓[0m[90m hsla converts to rgba[0m
    [32m  ✓[0m[90m handles maximum hue value[0m
[0m    rgbaToHSLA[0m
    [32m  ✓[0m[90m rgba converts to hsla (low lightness)[0m
    [32m  ✓[0m[90m rgba converts to hsla (high lightness)[0m
[0m    hslaToHSBA[0m
    [32m  ✓[0m[90m hsla converts to hsba[0m
[0m    hsbaToHSLA[0m
    [32m  ✓[0m[90m hsba converts to hsla[0m
[0m  color/CreatingReading[0m
[0m    p5.prototype.alpha[0m
    [32m  ✓[0m[90m no friendly-err-msg I[0m
    [32m  ✓[0m[90m no friendly-err-msg II[0m
    [32m  ✓[0m[90m wrong param type at #0[0m
[0m    p5.prototype.red, green, blue[0m
    [32m  ✓[0m[90m red(): no friendly-err-msg[0m
    [32m  ✓[0m[90m green(): no friendly-err-msg[0m
    [32m  ✓[0m[90m blue(): no friendly-err-msg[0m
[0m    p5.prototype.hue, brightness, lightness, saturation[0m
    [32m  ✓[0m[90m hue(): no friendly-err-msg[0m
    [32m  ✓[0m[90m brightness(): no friendly-err-msg[0m
    [32m  ✓[0m[90m lightness(): no friendly-err-msg[0m
    [32m  ✓[0m[90m saturation(): no friendly-err-msg[0m
[0m    p5.prototype.lerpColor[0m
    [32m  ✓[0m[90m should correctly get lerp colors in RGB[0m
    [32m  ✓[0m[90m should correctly get lerp colors in HSL[0m
    [32m  ✓[0m[90m should correctly get lerp colors in HSB[0m
    [32m  ✓[0m[90m should not extrapolate[0m
    [32m  ✓[0m[90m missing param #2[0m
[0m    p5.prototype.lerpColor with alpha[0m
    [32m  ✓[0m[90m should correctly get lerp colors in RGB with alpha[0m
    [32m  ✓[0m[90m should correctly get lerp colors in HSL with alpha[0m
    [32m  ✓[0m[90m should correctly get lerp colors in HSB with alpha[0m
    [32m  ✓[0m[90m should not extrapolate[0m
[0m  p5.Color[0m
[0m    p5.prototype.color(r,g,b)[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
    [32m  ✓[0m[90m shouldn't set HSBA property before hsb access func is called[0m
    [32m  ✓[0m[90m shouldn't set HSLA property before hsb access func is called[0m
    [32m  ✓[0m[90m color(): missing param #0 + throws error[0m
[0m    p5.prototype.color("#rgb")[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
    [32m  ✓[0m[90m invalid hex values resolve to white[0m
    [32m  ✓[0m[90m should not be able to pass css & alpha[0m
[0m      spot check[0m
      [32m  ✓[0m[90m numeric hex values[0m
      [32m  ✓[0m[90m alphabetic hex values[0m
      [32m  ✓[0m[90m alphanumeric hex values[0m
[0m    p5.prototype.color("#rgba")[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
    [32m  ✓[0m[90m invalid hex values resolve to white[0m
[0m      spot check[0m
      [32m  ✓[0m[90m numeric hex values[0m
      [32m  ✓[0m[90m alphabetic hex values[0m
      [32m  ✓[0m[90m alphanumeric hex values[0m
[0m    p5.prototype.color("#rrggbb")[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
    [32m  ✓[0m[90m invalid hex values resolve to white[0m
[0m      spot check[0m
      [32m  ✓[0m[90m numeric hex values[0m
      [32m  ✓[0m[90m alphabetic hex values[0m
      [32m  ✓[0m[90m alphanumeric hex values[0m
[0m    p5.prototype.color("#rrggbbaa")[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
    [32m  ✓[0m[90m invalid hex values resolve to white[0m
[0m      spot check[0m
      [32m  ✓[0m[90m numeric hex values[0m
      [32m  ✓[0m[90m alphabetic hex values[0m
      [32m  ✓[0m[90m alphanumeric hex values[0m
[0m    p5.prototype.color("rgb(r,g,b)")[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
    [32m  ✓[0m[90m spot check variant spacing[0m
    [32m  ✓[0m[90m invalid RGB values resolve to white[0m
[0m    p5.prototype.color("rgb(r%,g%,b%)")[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
    [32m  ✓[0m[90m spot check variant spacing[0m
    [32m  ✓[0m[90m spot check decimal percentage values[0m
    [32m  ✓[0m[90m invalid percentage values default to white[0m
[0m    p5.prototype.color("rgba(r,g,b,a)")[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
    [32m  ✓[0m[90m spot check variant spacing[0m
    [32m  ✓[0m[90m invalid RGBA values resolve to white[0m
[0m    p5.prototype.color("rgba(r%,g%,b%,a)")[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
    [32m  ✓[0m[90m spot check variant spacing[0m
    [32m  ✓[0m[90m spot check decimal percentage values[0m
    [32m  ✓[0m[90m invalid RGBA percentage values resolve to white[0m
[0m    p5.prototype.color("hsl(h, s%, l%)")[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
[0m    p5.prototype.color("hsla(h, s%, l%, a)")[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
[0m    p5.prototype.color("hsb(h, s%, b%)")[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
[0m    p5.prototype.color("hsba(h, s%, b%, a)")[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
[0m    p5.prototype.color("svgnamedcolor")[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
    [32m  ✓[0m[90m spot check color keywords[0m
[0m    p5.prototype.color([])[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
[0m    p5.prototype.color(r,g,b,a)[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
    [32m  ✓[0m[90m should correctly get hue/saturation/brightness/lightness[0m
    [32m  ✓[0m[90m should correctly get RGBA values[0m
    [32m  ✓[0m[90m should correctly render color string[0m
[0m    in default mode[0m
    [32m  ✓[0m[90m can be modified with alpha setter[0m
    [32m  ✓[0m[90m can be modified with rgb setters[0m
[0m    p5.Color in RGB mode with custom range[0m
    [32m  ✓[0m[90m should correctly convert to RGBA[0m
    [32m  ✓[0m[90m should correctly get RGBA property[0m
    [32m  ✓[0m[90m should correctly render color string[0m
    [32m  ✓[0m[90m should correctly get RGBA property after overwrite[0m
[0m    p5.Color in HSL mode[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
    [32m  ✓[0m[90m can be modified with alpha setter[0m
    [32m  ✓[0m[90m can be modified with rgb setters[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
    [32m  ✓[0m[90m should correctly get hue/saturation/lightness/alpha[0m
[0m    p5.Color in HSL mode with Alpha[0m
[0m    p5.Color in HSL mode with custom range[0m
    [32m  ✓[0m[90m should correctly get HSLA property[0m
    [32m  ✓[0m[90m should correctly convert to RGBA[0m
    [32m  ✓[0m[90m should correctly render color string[0m
    [32m  ✓[0m[90m can be modified with alpha setter[0m
    [32m  ✓[0m[90m can be modified with rgb setters[0m
    [32m  ✓[0m[90m should correctly get HSLA property[0m
[0m    p5.Color in HSL mode with RGB string[0m
    [32m  ✓[0m[90m should correctly convert to RGBA[0m
    [32m  ✓[0m[90m should correctly render color string[0m
[0m    p5.Color in HSL mode with HSL string[0m
    [32m  ✓[0m[90m should correctly get HSLA property[0m
    [32m  ✓[0m[90m should correctly convert to RGBA[0m
    [32m  ✓[0m[90m should correctly render color string[0m
[0m    p5.Color in HSL mode with HSB string[0m
    [32m  ✓[0m[90m should correctly get HSLA property[0m
    [32m  ✓[0m[90m should correctly convert to RGBA[0m
    [32m  ✓[0m[90m should correctly render color string[0m
[0m    p5.Color in HSB mode[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
    [32m  ✓[0m[90m can be modified with alpha setter[0m
    [32m  ✓[0m[90m can be modified with rgb setters[0m
[0m    p5.Color in HSB mode with Alpha[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGBA property[0m
    [32m  ✓[0m[90m should correctly get hue/saturation/brightness/alpha[0m
[0m    p5.Color in HSB mode with custom range[0m
    [32m  ✓[0m[90m should correctly get HSBA property[0m
    [32m  ✓[0m[90m should correctly convert to RGBA[0m
    [32m  ✓[0m[90m should correctly render color string[0m
[0m    p5.Color in HSB mode with RGB string[0m
    [32m  ✓[0m[90m should correctly get HSBA property[0m
    [32m  ✓[0m[90m should correctly convert to RGBA[0m
    [32m  ✓[0m[90m should correctly render color string[0m
[0m    p5.Color in HSB mode with HSB string[0m
    [32m  ✓[0m[90m should correctly get HSBA property[0m
    [32m  ✓[0m[90m should correctly convert to RGBA[0m
    [32m  ✓[0m[90m should correctly render color string[0m
[0m    p5.Color in HSB mode with HSL string[0m
    [32m  ✓[0m[90m should correctly get HSBA property[0m
    [32m  ✓[0m[90m should correctly convert to RGBA[0m
    [32m  ✓[0m[90m should correctly render color string[0m
[0m    p5.Color in RGB mode with grayscale value[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGB levels[0m
[0m    p5.Color in RGB mode with grayscale value and alpha[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGB levels[0m
[0m    p5.Color in HSB mode with grayscale value[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGB levels[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
[0m    p5.Color in HSB mode with grayscale value and alpha[0m
    [32m  ✓[0m[90m should correctly set RGB levels[0m
[0m    p5.Color in HSL mode with grayscale value[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGB levels[0m
[0m    p5.Color in HSL mode with grayscale value and alpha[0m
    [32m  ✓[0m[90m should create instance of p5.Color[0m
    [32m  ✓[0m[90m should correctly set RGB levels[0m
[0m    p5.Color.prototype.toString[0m
    [32m  ✓[0m[90m should generate (r,g,b,a) color string with 0-1 normalized alpha[0m
    [32m  ✓[0m[90m should consistently generate the same output[0m
    [32m  ✓[0m[90m should not mutate color levels[0m
[0m  color/Setting[0m
[0m    p5.prototype.colorMode[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should set mode to RGB[0m
    [32m  ✓[0m[90m should correctly set color RGB maxes[0m
    [32m  ✓[0m[90m should set mode to HSL[0m
    [32m  ✓[0m[90m should correctly set color HSL maxes[0m
    [32m  ✓[0m[90m should set mode to HSB[0m
    [32m  ✓[0m[90m should correctly set color HSB maxes[0m
[0m  2D Primitives[0m
[0m    p5.prototype.arc[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m no friendly-err-msg[0m
    [32m  ✓[0m[90m missing param #4, #5[0m
    [32m  ✓[0m[90m wrong param type at #0[0m
[0m    p5.prototype.ellipse[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m no friendly-err-msg[0m
    [32m  ✓[0m[90m missing param #2[0m
    [32m  ✓[0m[90m missing param #2[0m
    [32m  ✓[0m[90m wrong param type at #0[0m
[0m    p5.prototype.line[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m no friendly-err-msg, 2D[0m
    [32m  ✓[0m[90m no friendly-err-msg, 3D[0m
    [32m  ✓[0m[90m missing param #3[0m
    [32m  ✓[0m[90m missing param #4 [0m
    [32m  ✓[0m[90m wrong param type at #1[0m
[0m    p5.prototype.point[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m no friendly-err-msg, 2D[0m
    [32m  ✓[0m[90m no friendly-err-msg, 3D[0m
    [32m  ✓[0m[90m missing param #1[0m
    [32m  ✓[0m[90m wrong param type at #1[0m
[0m    p5.prototype.quad[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m no friendly-err-msg, 2D[0m
    [32m  ✓[0m[90m missing param #7[0m
    [32m  ✓[0m[90m wrong param type at #1[0m
    [32m  ✓[0m[90m should be a function[0m
[0m    p5.prototype.rect[0m
    [32m  ✓[0m[90m no friendly-err-msg, format I[0m
    [32m  ✓[0m[90m no friendly-err-msg, format II[0m
    [32m  ✓[0m[90m missing param #3[0m
    [32m  ✓[0m[90m missing param #4[0m
    [32m  ✓[0m[90m wrong param type at #1[0m
    [32m  ✓[0m[90m should be a function[0m
[0m    p5.prototype.triangle[0m
    [32m  ✓[0m[90m no friendly-err-msg[0m
    [32m  ✓[0m[90m missing param #5[0m
    [32m  ✓[0m[90m wrong param type at #1[0m
[0m    p5.prototype.square[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m no friendly-err-msg, format I[0m
    [32m  ✓[0m[90m no friendly-err-msg, format II[0m
    [32m  ✓[0m[90m missing param #2[0m
    [32m  ✓[0m[90m wrong param type at #1[0m
[0m    p5.prototype._normalizeArcAngles[0m
    [32m  ✓[0m[90m start/stop both at zero[0m
    [32m  ✓[0m[90m start/stop same but non-zero[0m
    [32m  ✓[0m[90m start/stop both close to zero, start < stop[0m
    [32m  ✓[0m[90m start/stop both close to zero, start > stop[0m
    [32m  ✓[0m[90m start/stop both close to same non-zero, start < stop[0m
    [32m  ✓[0m[90m start/stop both close to same non-zero, start > stop[0m
    [32m  ✓[0m[90m start/stop around zero but not close, start < stop[0m
    [32m  ✓[0m[90m start/stop around zero but not close, start > stop[0m
    [32m  ✓[0m[90m start/stop away from zero and not close, start < stop[0m
    [32m  ✓[0m[90m start/stop away from zero and not close, start > stop[0m
    [32m  ✓[0m[90m scaling correction, quadrants 1 and 3[0m
    [32m  ✓[0m[90m scaling correction, quadrants 2 and 4[0m
[0m  Curves[0m
[0m    p5.prototype.bezier[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m no friendly-err-msg[0m
    [32m  ✓[0m[90m no friendly-err-msg. missing param #6, #7[0m
    [32m  ✓[0m[90m wrong param type at #0[0m
[0m    p5.prototype.bezierPoint[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return a number: missing param #0~4[0m
    [32m  ✓[0m[90m should return the correct point on a Bezier Curve[0m
[0m    p5.prototype.bezierTangent[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return a number: missing param #0~4[0m
    [32m  ✓[0m[90m should return the correct point on a Bezier Curve[0m
[0m    p5.prototype.curve[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m no friendly-err-msg[0m
    [32m  ✓[0m[90m no friendly-err-msg. missing param #6, #7[0m
    [32m  ✓[0m[90m wrong param type at #0[0m
[0m    p5.prototype.curvePoint[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return a number: missing param #0~4[0m
    [32m  ✓[0m[90m should return the correct point on a Catmull-Rom Curve[0m
[0m    p5.prototype.curveTangent[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return a number: missing param #0~4[0m
    [32m  ✓[0m[90m should return the correct point on a Catmull-Rom Curve[0m
[0m  Graphics[0m
[0m    p5.prototype.createGraphics[0m
    [32m  ✓[0m[90m it creates a graphics[0m
[0m    p5.Graphics[0m
    [32m  ✓[0m[90m it has necessary properties[0m
    [32m  ✓[0m[90m it has consistent sizes[0m
    [32m  ✓[0m[90m its canvas has consistent sizes[0m
    [32m  ✓[0m[90m it has a valid pixels array[0m
[0m    p5.Graphics.pixelDensity[0m
    [32m  ✓[0m[90m it can change density[0m
    [32m  ✓[0m[90m it keeps valid sizes after change[0m
    [32m  ✓[0m[90m its canvas keeps valid sizes after change[0m
    [32m  ✓[0m[90m it keeps a valid pixel array after change[0m
[0m    p5.Graphics.resizeCanvas[0m
    [32m  ✓[0m[90m it can call resizeCanvas[0m
    [32m  ✓[0m[90m it resizes properly with pixelDensity 1[0m
    [32m  ✓[0m[90m its canvas resizes properly with pixelDensity 1[0m
    [32m  ✓[0m[90m it resizes properly the pixels array with density 1[0m
    [32m  ✓[0m[90m it resizes properly with pixelDensity 2[0m
    [32m  ✓[0m[90m its canvas resizes properly with pixelDensity 2[0m
    [32m  ✓[0m[90m it resizes properly the pixels array with density 2[0m
[0m  Error Helpers[0m
[0m    validateParameters: Numbers + optional Constant[0m
    [32m  ✓[0m[90m arc(): no friendly-err-msg[0m
    [32m  ✓[0m[90m arc(): missing param #4, #5[0m
    [32m  ✓[0m[90m arc(): missing param #0[0m
    [32m  ✓[0m[90m arc(): missing param #4[0m
    [32m  ✓[0m[90m arc(): missing param #5[0m
    [32m  ✓[0m[90m arc(): missing param #6, no friendly-err-msg[0m
    [32m  ✓[0m[90m arc(): wrong param type at #0[0m
[0m    validateParameters: Numbers + optional Constant[0m
    [32m  ✓[0m[90m rect(): no friendly-err-msg[0m
    [32m  ✓[0m[90m rect(): missing param #3[0m
    [32m  ✓[0m[90m rect(): wrong param type at #0[0m
[0m    validateParameters: class, multi-types + optional Numbers[0m
    [32m  ✓[0m[90m ambientLight(): no friendly-err-msg[0m
[0m    validateParameters: multi-format[0m
    [32m  ✓[0m[90m color(): no friendly-err-msg[0m
    [32m  ✓[0m[90m color(): no friendly-err-msg[0m
    [32m  ✓[0m[90m color(): no friendly-err-msg[0m
    [32m  ✓[0m[90m color(): optional parameter, incorrect type[0m
    [32m  ✓[0m[90m color(): extra parameter[0m
    [32m  ✓[0m[90m color(): incorrect element type[0m
    [32m  ✓[0m[90m color(): incorrect parameter count[0m
[0m    helpForMisusedAtTopLevelCode[0m
    [32m  ✓[0m[90m help for constants is shown[0m[33m (54ms)[0m
    [32m  ✓[0m[90m help for functions is shown[0m
    [32m  ✓[0m[90m help for variables is shown[0m
[0m  Core[0m
[0m    new p5(sketch, null, true)[0m
    [32m  ✓[0m[90m should define drawContext synchronously[0m
[0m    new p5(sketch, null, false)[0m
    [32m  ✓[0m[90m should define drawContext asynchronously[0m
[0m    new p5(sketch, node, true)[0m
    [32m  ✓[0m[90m should define drawContext synchronously[0m
[0m    new p5(sketch, node)[0m
    [32m  ✓[0m[90m should define drawContext asynchronously[0m
    [32m  ✓[0m[90m should define drawContext synchronously[0m
    [32m  ✓[0m[90m should define drawContext asynchronously[0m
[0m    new p5(sketch, true)[0m
[0m    new p5(sketch)[0m
[0m    p5.prototype.registerMethod[0m
    [32m  ✓[0m[90m should register and call "init" methods[0m
[0m    new p5() / global mode[0m
    [32m  ✓[0m[90m is triggered when "setup" is in window[0m[31m (163ms)[0m
    [32m  ✓[0m[90m is triggered when "draw" is in window[0m[31m (79ms)[0m
    [32m  ✓[0m[90m works when p5.js is loaded asynchronously[0m[33m (56ms)[0m
    [32m  ✓[0m[90m works on-demand[0m[33m (42ms)[0m
[0m    p5.prototype._createFriendlyGlobalFunctionBinder[0m
    [32m  ✓[0m[90m should NOT warn when globals already exist[0m
    [32m  ✓[0m[90m should NOT warn when globals are overwritten[0m
    [32m  ✓[0m[90m should allow overwritten globals to be overwritten[0m
    [32m  ✓[0m[90m should allow globals to be deleted[0m
    [32m  ✓[0m[90m should create enumerable globals[0m
    [32m  ✓[0m[90m should not warn about overwriting print()[0m
    [32m  ✓[0m[90m should not warn about overwriting preload methods[0m
    [32m  ✓[0m[90m should not warn about overwriting non-functions[0m
    [32m  ✓[0m[90m instance preload is independent of window[0m[33m (44ms)[0m
[0m  p5.Element[0m
[0m    with no events[0m
    [32m  ✓[0m[90m attaches and gets events[0m
    [32m  ✓[0m[90m attaches mutiple handlers and only latest gets events[0m
    [32m  ✓[0m[90m detaches and doesnt get events[0m
    [32m  ✓[0m[90m should add class to element[0m
[0m    operating with elemet classes[0m
    [32m  ✓[0m[90m should remove class from element with only one class[0m
    [32m  ✓[0m[90m should remove class from element with several classes[0m
    [32m  ✓[0m[90m should return true if element has specified class[0m
    [32m  ✓[0m[90m should return false if element has not specified class[0m
    [32m  ✓[0m[90m should return false if element has class that is partially similar as specified class[0m
    [32m  ✓[0m[90m should toggle specified class on element[0m
[0m  Rendering[0m
[0m    p5.prototype.createCanvas[0m
    [32m  ✓[0m[90m should have correct initial colors[0m
[0m    p5.prototype.resizeCanvas[0m
    [32m  ✓[0m[90m should resize canvas[0m
    [32m  ✓[0m[90m should restore fill color[0m
    [32m  ✓[0m[90m should restore stroke color[0m
    [32m  ✓[0m[90m should restore stroke weight[0m
    [32m  ✓[0m[90m should restore stroke cap[0m
[0m    p5.prototype.blendMode[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should be able to ADD[0m
    [32m  ✓[0m[90m should be able to MULTIPLY[0m
[0m    p5.prototype.setAttributes[0m
    [32m  ✓[0m[90m _glAttributes should be null at start[0m
    [32m  ✓[0m[90m _glAttributes should modify with setAttributes[0m
    [32m  ✓[0m[90m _glAttributes.antialias modify with smooth()[0m
[0m    webgl assertions[0m
    [32m  ✓[0m[90m rotateX() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m rotateY() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m rotateZ() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m camera() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m perspective() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m ortho() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m orbitControl() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m ambientLight() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m directionalLight() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m pointLight() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m lights() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m model() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m createShader() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m shader() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m normalMaterial() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m texture() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m ambientMaterial() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m specularMaterial() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m shininess() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m plane() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m box() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m sphere() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m cylinder() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m cone() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m ellipsoid() should throw a WEBGL assertion Error[0m
    [32m  ✓[0m[90m torus() should throw a WEBGL assertion Error[0m
[0m  Structure[0m
[0m    p5.frameCount[0m
    [32m  ✓[0m[90m starts at zero[0m
    [32m  ✓[0m[90m matches draw calls[0m[31m (232ms)[0m
[0m    p5.prototype.loop and p5.prototype.noLoop[0m
    [32m  ✓[0m[90m noLoop should stop[0m[31m (101ms)[0m
    [32m  ✓[0m[90m loop should restart[0m[31m (100ms)[0m
[0m    p5.prototype.push and p5.prototype.pop[0m
    [32m  ✓[0m[90m leak no state after fill()[0m
    [32m  ✓[0m[90m leak no state after noFill()[0m
    [32m  ✓[0m[90m leak no state after stroke()[0m
    [32m  ✓[0m[90m leak no state after noStroke()[0m
    [32m  ✓[0m[90m leak no state after tint()[0m
    [32m  ✓[0m[90m leak no state after noTint()[0m
    [32m  ✓[0m[90m leak no state after strokeWeight()[0m
    [32m  ✓[0m[90m leak no state after strokeCap()[0m
    [32m  ✓[0m[90m leak no state after strokeJoin()[0m
    [32m  ✓[0m[90m leak no state after imageMode()[0m
    [32m  ✓[0m[90m leak no state after rectMode()[0m
    [32m  ✓[0m[90m leak no state after ellipseMode()[0m
    [32m  ✓[0m[90m leak no state after colorMode()[0m
    [32m  ✓[0m[90m leak no state after textAlign()[0m
    [32m  ✓[0m[90m leak no state after textFont()[0m
    [32m  ✓[0m[90m leak no state after textStyle()[0m
    [32m  ✓[0m[90m leak no state after textSize()[0m
    [32m  ✓[0m[90m leak no state after textLeading()[0m
[0m    p5.prototype.redraw[0m
    [32m  ✓[0m[90m resets the rendering matrix between frames[0m
    [32m  ✓[0m[90m instance redraw is independent of window[0m[31m (1040ms)[0m
[0m    loop[0m
    [32m  ✓[0m[90m loop in setup does not call draw[0m
    [32m  ✓[0m[90m loop in draw does not call draw[0m
[0m  Dictionary Objects[0m
[0m    p5.prototype.stringDict[0m
    [32m  ✓[0m[90m should be created[0m
    [32m  ✓[0m[90m has correct structure[0m
    [32m  ✓[0m[90m should have correct size[0m
    [32m  ✓[0m[90m should add new key-value pairs[0m
    [32m  ✓[0m[90m should add objects[0m
    [32m  ✓[0m[90m should change existing values[0m
    [32m  ✓[0m[90m should clear[0m
[0m    p5.prototype.numberDict[0m
    [32m  ✓[0m[90m should be created[0m
    [32m  ✓[0m[90m has correct structure[0m
    [32m  ✓[0m[90m should have correct size[0m
    [32m  ✓[0m[90m should add new key-value pairs[0m
    [32m  ✓[0m[90m should change existing values[0m
    [32m  ✓[0m[90m should add values together[0m
    [32m  ✓[0m[90m should subtract from value[0m
    [32m  ✓[0m[90m should divide from value[0m
    [32m  ✓[0m[90m should multiply value[0m
    [32m  ✓[0m[90m should find minimum value[0m
    [32m  ✓[0m[90m should find maximum value[0m
    [32m  ✓[0m[90m should clear[0m
[0m  Keyboard Events[0m
[0m    p5.prototype.keyIsPressed[0m
    [32m  ✓[0m[90m keyIsPressed should be a boolean[0m
    [32m  ✓[0m[90m keyIsPressed should be true on key press[0m
    [32m  ✓[0m[90m keyIsPressed should be false on key up[0m
[0m    p5.prototype.isKeyPressed[0m
    [32m  ✓[0m[90m isKeyPressed should be a boolean[0m
    [32m  ✓[0m[90m isKeyPressed should be true on key press[0m
    [32m  ✓[0m[90m isKeyPressed should be false on key up[0m
[0m    p5.prototype.key[0m
    [32m  ✓[0m[90m key should be a string[0m
    [32m  ✓[0m[90m key should return the key pressed[0m
    [32m  ✓[0m[90m key should return the key pressed[0m
    [32m  ✓[0m[90m key should return the key pressed[0m
[0m    p5.prototype.keyCode[0m
    [32m  ✓[0m[90m keyCode should be a number[0m
    [32m  ✓[0m[90m key should return the key pressed[0m
    [32m  ✓[0m[90m key should return the key pressed[0m
[0m    keyPressed[0m
    [32m  ✓[0m[90m keyPressed functions on multiple instances must run once[0m
[0m    keyReleased[0m
    [32m  ✓[0m[90m keyReleased functions on multiple instances must run once[0m
[0m    keyTyped[0m
    [32m  ✓[0m[90m keyTyped functions on multiple instances must run once[0m
[0m  loading images[0m
  [32m  ✓[0m[90m should call successCallback when image loads[0m

  [32m  ✓[0m[90m should call failureCallback when unable to load image[0m
  [32m  ✓[0m[90m should draw image with defaults[0m
  [36m  - Test in preload() with success callback[0m
  [36m  - Test in setup() after preload()[0m
[0m  pixels[0m
[0m    p5.Image.get[0m
    [32m  ✓[0m[90m get(x,y) works with integers[0m
    [32m  ✓[0m[90m get(x,y) returns 0s for out of bounds arguments[0m
    [32m  ✓[0m[90m get() returns a copy when no arguments are supplied[0m
    [32m  ✓[0m[90m get(x,y,w,h) works[0m[31m (200ms)[0m
    [32m  ✓[0m[90m rounds down when given decimal numbers[0m
[0m  Files[0m
  [32m  ✓[0m[90m preload is a Boolean[0m
[0m    httpDo()[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should work when provided with just a path[0m
    [32m  ✓[0m[90m should accept method parameter[0m
    [32m  ✓[0m[90m should accept type parameter[0m
    [32m  ✓[0m[90m should accept method and type parameter together[0m

    [32m  ✓[0m[90m should pass error object to error callback function[0m
    [32m  ✓[0m[90m should return a promise[0m

    [32m  ✓[0m[90m should return a promise that rejects on error[0m
[0m    loadJSON() in Preload[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return an Object[0m
[0m    loadXML() in Preload[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return an Object[0m
[0m    loadStrings() in Preload[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return an array[0m
[0m    p5.prototype.myp5.loadJSON[0m
    [32m  ✓[0m[90m should be a function[0m
{ status: 404, ok: false }
    [32m  ✓[0m[90m should call callback function if provided[0m
    [32m  ✓[0m[90m should pass an Array to callback function[0m

    [32m  ✓[0m[90m should call error callback function if provided[0m

    [32m  ✓[0m[90m should pass error object to error callback function[0m
    [32m  ✓[0m[90m should allow json to override jsonp[0m
[0m    p5.prototype.loadXML[0m
    [32m  ✓[0m[90m should be a function[0m
[0m    p5.prototype.loadStrings[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should call callback function if provided[0m
    [32m  ✓[0m[90m should pass an Array to callback function[0m
    [32m  ✓[0m[90m should include empty strings[0m

    [32m  ✓[0m[90m should call error callback function if provided[0m

    [32m  ✓[0m[90m should pass error object to error callback function[0m
[0m    p5.prototype.loadTable[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should load a file without options[0m
    [32m  ✓[0m[90m the loaded file should be correct[0m
    [32m  ✓[0m[90m using the csv option works[0m
    [32m  ✓[0m[90m using the csv and tsv options fails[0m
    [32m  ✓[0m[90m using the header option works[0m
    [32m  ✓[0m[90m using the header and csv options together works[0m
    [32m  ✓[0m[90m CSV files should handle commas within quoted fields[0m
    [32m  ✓[0m[90m CSV files should handle escaped quotes and returns within quoted fields[0m
[0m    p5.prototype.loadXML[0m
    [32m  ✓[0m[90m should be a function[0m
[0m    p5.prototype.loadBytes[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should call callback function if provided[0m

    [32m  ✓[0m[90m should call error callback function if not found[0m
    [32m  ✓[0m[90m should pass an Object to callback function[0m
    [32m  ✓[0m[90m data.bytes should be an Array/Uint8Array[0m
    [32m  ✓[0m[90m should load correct data[0m
[0m  loadBytes[0m

  [32m  ✓[0m[90m _friendlyFileLoadError is called[0m

  [32m  ✓[0m[90m error prevents sketch continuing[0m[33m (51ms)[0m

  [32m  ✓[0m[90m error callback is called[0m[33m (55ms)[0m
  [32m  ✓[0m[90m loading correctly triggers setup[0m
  [32m  ✓[0m[90m success callback is called[0m[33m (54ms)[0m
  [32m  ✓[0m[90m returns the correct object[0m
  [32m  ✓[0m[90m passes an object to success callback for object JSON[0m
[0m  loadStrings[0m

  [32m  ✓[0m[90m _friendlyFileLoadError is called[0m

  [32m  ✓[0m[90m error prevents sketch continuing[0m[33m (55ms)[0m

  [32m  ✓[0m[90m error callback is called[0m[33m (55ms)[0m
  [32m  ✓[0m[90m loading correctly triggers setup[0m
  [32m  ✓[0m[90m success callback is called[0m
  [32m  ✓[0m[90m returns an array of strings[0m
  [32m  ✓[0m[90m passes an array to success callback[0m
  [32m  ✓[0m[90m should include empty strings[0m
[0m  loadXML[0m

  [32m  ✓[0m[90m _friendlyFileLoadError is called[0m

  [32m  ✓[0m[90m error prevents sketch continuing[0m[33m (51ms)[0m

  [32m  ✓[0m[90m error callback is called[0m[33m (57ms)[0m
  [32m  ✓[0m[90m loading correctly triggers setup[0m
  [32m  ✓[0m[90m success callback is called[0m[33m (66ms)[0m
  [32m  ✓[0m[90m returns an object with correct data[0m
  [32m  ✓[0m[90m passes an object with correct data[0m
[0m  loadJSON[0m

  [32m  ✓[0m[90m _friendlyFileLoadError is called[0m

  [32m  ✓[0m[90m error prevents sketch continuing[0m[33m (55ms)[0m

  [32m  ✓[0m[90m error callback is called[0m[33m (55ms)[0m
  [32m  ✓[0m[90m loading correctly triggers setup[0m
  [32m  ✓[0m[90m success callback is called[0m[33m (55ms)[0m
  [32m  ✓[0m[90m returns an object for object JSON.[0m
  [32m  ✓[0m[90m passes an object to success callback for object JSON.[0m
  [36m  - returns an array for array JSON.[0m
  [32m  ✓[0m[90m passes an array to success callback for array JSON.[0m
[0m  loadTable[0m

  [32m  ✓[0m[90m _friendlyFileLoadError is called[0m

{ status: 404, ok: false }
  [32m  ✓[0m[90m error prevents sketch continuing[0m[33m (51ms)[0m

  [32m  ✓[0m[90m error callback is called[0m[33m (55ms)[0m
  [32m  ✓[0m[90m loading correctly triggers setup[0m
  [32m  ✓[0m[90m success callback is called[0m[33m (55ms)[0m
  [32m  ✓[0m[90m returns an object with correct data[0m
  [32m  ✓[0m[90m passes an object to success callback for object JSON[0m
  [32m  ✓[0m[90m csv option returns the correct data[0m
  [32m  ✓[0m[90m using csv and tsv returns an error[0m
  [32m  ✓[0m[90m using the header option works[0m
  [32m  ✓[0m[90m allows the header and csv options together[0m
  [32m  ✓[0m[90m CSV files should handle commas within quoted fields[0m
  [32m  ✓[0m[90m CSV files should handle escaped quotes and returns within quoted fields[0m
[0m  loadImage[0m

  [32m  ✓[0m[90m _friendlyFileLoadError is called[0m
  [32m  ✓[0m[90m error prevents sketch continuing[0m

{ isTrusted: true }
  [32m  ✓[0m[90m error callback is called[0m[33m (53ms)[0m
  [32m  ✓[0m[90m loading correctly triggers setup[0m
  [32m  ✓[0m[90m success callback is called[0m[33m (51ms)[0m
  [32m  ✓[0m[90m returns an object with correct data[0m
  [32m  ✓[0m[90m passes an object with correct data to callback[0m
[0m  loadModel[0m

  [32m  ✓[0m[90m _friendlyFileLoadError is called[0m

  [32m  ✓[0m[90m error prevents sketch continuing[0m[33m (52ms)[0m

  [32m  ✓[0m[90m error callback is called[0m[33m (56ms)[0m
  [32m  ✓[0m[90m loading correctly triggers setup[0m
  [32m  ✓[0m[90m success callback is called[0m[31m (76ms)[0m
  [32m  ✓[0m[90m returns an object with correct data[0m
  [32m  ✓[0m[90m passes an object with correct data to callback[0m
[0m  loadShader[0m

  [32m  ✓[0m[90m _friendlyFileLoadError is called[0m

{ status: 404, ok: false }
  [32m  ✓[0m[90m error with vert prevents sketch continuing[0m[33m (52ms)[0m

{ status: 404, ok: false }
  [32m  ✓[0m[90m error with frag prevents sketch continuing[0m[33m (52ms)[0m

  [32m  ✓[0m[90m error callback is called for vert[0m[33m (56ms)[0m

  [32m  ✓[0m[90m error callback is called for frag[0m[33m (56ms)[0m
  [32m  ✓[0m[90m loading correctly triggers setup[0m
  [32m  ✓[0m[90m success callback is called[0m[33m (60ms)[0m
  [32m  ✓[0m[90m returns an object with correct data[0m
  [32m  ✓[0m[90m passes an object with correct data to callback[0m
[0m  Calculation[0m
[0m    p5.prototype.abs[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return a number[0m
    [32m  ✓[0m[90m should return an absolute value[0m
[0m    p5.prototype.ceil[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return ceil value given negative value[0m
    [32m  ✓[0m[90m should return a ceil value given positive value[0m
    [32m  ✓[0m[90m should return same number[0m
[0m    p5.prototype.dist[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return a number[0m
    [32m  ✓[0m[90m should return correct distance[0m
    [32m  ✓[0m[90m should return positive  distance[0m
    [32m  ✓[0m[90m should return correct distance[0m
    [32m  ✓[0m[90m should return positive  distance[0m
    [32m  ✓[0m[90m should not underflow[0m
    [32m  ✓[0m[90m should not overflow[0m
    [32m  ✓[0m[90m should return 0 for identical 2D points[0m
    [32m  ✓[0m[90m should return 0 for identical 3D points[0m
[0m    p5.prototype.exp[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return exp value given negative value[0m
    [32m  ✓[0m[90m should return exp value given positive value[0m
    [32m  ✓[0m[90m should return 1[0m
[0m    p5.prototype.floor[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return floor value given negative value[0m
    [32m  ✓[0m[90m should return a floor value given positive value[0m
    [32m  ✓[0m[90m should return same number[0m
[0m    p5.prototype.lerp[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return start[0m
    [32m  ✓[0m[90m should return average[0m
    [32m  ✓[0m[90m should return stop[0m
[0m    p5.prototype.log[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return log value given negative value[0m
    [32m  ✓[0m[90m should return log value given positive value[0m
    [32m  ✓[0m[90m should return 0[0m
[0m    p5.prototype.mag[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return a number[0m
    [32m  ✓[0m[90m should return correct magitude[0m
    [32m  ✓[0m[90m should return positive magnitude given negative inputs[0m
[0m    p5.prototype.map[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return a number[0m
    [32m  ✓[0m[90m should return scaled value[0m
    [32m  ✓[0m[90m should extrapolate by default[0m
    [32m  ✓[0m[90m shaould clamp correctly[0m
[0m    p5.prototype.max[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return larger left argument[0m
    [32m  ✓[0m[90m should return larger right argument[0m
    [32m  ✓[0m[90m should return single value[0m
    [32m  ✓[0m[90m should return larger value from array[0m
    [32m  ✓[0m[90m should return larger value from array[0m
    [32m  ✓[0m[90m should return single value from array[0m
[0m    p5.prototype.min[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return smaller right  argument[0m
    [32m  ✓[0m[90m should return smaller left  argument[0m
    [32m  ✓[0m[90m should return single value[0m
    [32m  ✓[0m[90m should return smaller value from array[0m
    [32m  ✓[0m[90m should return smaller value from array[0m
    [32m  ✓[0m[90m should return single value from array[0m
[0m    p5.prototype.norm[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return scaled decimal value[0m
[0m    p5.prototype.constrain[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return same number[0m
    [32m  ✓[0m[90m should return lower bound[0m
    [32m  ✓[0m[90m should return upper bound[0m
[0m    p5.prototype.sq[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return sauare value[0m
    [32m  ✓[0m[90m should return squared value given negative number[0m
[0m    p5.prototype.pow[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return pow for negative exponential[0m
    [32m  ✓[0m[90m should return pow for positive exponential[0m
[0m    p5.prototype.round[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should round down[0m
    [32m  ✓[0m[90m should round up from midpoint[0m
    [32m  ✓[0m[90m should round up[0m
[0m    p5.prototype.sqrt[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return square root[0m
[0m  Noise[0m
[0m    p5.prototype.noise[0m
    [32m  ✓[0m[90m should return a number[0m
    [32m  ✓[0m[90m should return a number 0 < n < 1[0m
[0m    p5.prototype.noiseSeed[0m
    [32m  ✓[0m[90m should return a number 0 < n < 1[0m
    [32m  ✓[0m[90m should return same sequence of numbers[0m
[0m  p5.Vector[0m
[0m    p5.prototype.createVector()[0m
    [32m  ✓[0m[90m should create instance of p5.Vector[0m
    [32m  ✓[0m[90m should have x, y, z be initialized to 0[0m
[0m    p5.prototype.createVector()[0m
    [32m  ✓[0m[90m should have x, y, z be initialized to 1,2,3[0m
[0m    new p5.Vector()[0m
    [32m  ✓[0m[90m should set constant to DEGREES[0m
    [32m  ✓[0m[90m should have x, y, z be initialized to 0[0m
[0m    new p5.Vector(1, 2, 3)[0m
    [32m  ✓[0m[90m should have x, y, z be initialized to 1,2,3[0m
[0m    new p5.Vector(1,2,undefined)[0m
    [32m  ✓[0m[90m should have x, y, z be initialized to 1,2,0[0m
[0m    p5.prototype.rotate() RADIANS[0m
    [32m  ✓[0m[90m should have x, y, z rotated to 0, -1, 0 (RADIANS)[0m
[0m    p5.prototype.rotate() DEGREES[0m
    [32m  ✓[0m[90m should have x, y, z rotated to 0, -1, 0 (DEGREES)[0m
[0m    p5.prototype.angleBetween()[0m
    [32m  ✓[0m[90m should not trip on rounding issues in 2D space[0m
    [32m  ✓[0m[90m should not trip on rounding issues in 3D space[0m
    [32m  ✓[0m[90m should return NaN for zero vector[0m
[0m    set()[0m
[0m      with p5.Vector[0m
      [32m  ✓[0m[90m should have x, y, z be initialized to the vector's x, y, z[0m
[0m      with Array[0m
      [32m  ✓[0m[90m [2,4] should set x === 2, y === 4, z === 0[0m
      [32m  ✓[0m[90m should have x, y, z be initialized to the array's 0,1,2 index[0m
[0m      set(1,2,3)[0m
      [32m  ✓[0m[90m should have x, y, z be initialized to the 1, 2, 3[0m
[0m    copy()[0m
    [32m  ✓[0m[90m should not return the same instance[0m
    [32m  ✓[0m[90m should return the calling object's x, y, z[0m
[0m    add()[0m
[0m      with p5.Vector[0m
      [32m  ✓[0m[90m should add x, y, z  from the vector argument[0m
[0m      with Array[0m
      [32m  ✓[0m[90m should add the array's 0,1,2 index[0m
[0m        add([2, 4])[0m
        [32m  ✓[0m[90m should add the x and y components[0m
[0m      add(3,5)[0m
      [32m  ✓[0m[90m should add the x and y components[0m
[0m      add(2,3,4)[0m
      [32m  ✓[0m[90m should add the x, y, z components[0m
[0m      p5.Vector.add(v1, v2)[0m
      [32m  ✓[0m[90m should return neither v1 nor v2[0m
      [32m  ✓[0m[90m should be sum of the two p5.Vectors[0m
[0m    sub()[0m
[0m      with p5.Vector[0m
      [32m  ✓[0m[90m should sub x, y, z  from the vector argument[0m
[0m      with Array[0m
      [32m  ✓[0m[90m should substract from the array's 0,1,2 index[0m
[0m        sub([2, 4])[0m
        [32m  ✓[0m[90m should sub the x and y components[0m
[0m      sub(3,5)[0m
      [32m  ✓[0m[90m should substract the x and y components[0m
      [32m  ✓[0m[90m should substract the x, y, z components[0m
[0m      sub(2,3,4)[0m
[0m      p5.Vector.sub(v1, v2)[0m
      [32m  ✓[0m[90m should return neither v1 nor v2[0m
      [32m  ✓[0m[90m should be v1 - v2[0m
[0m    mult()[0m
    [32m  ✓[0m[90m should return the same object[0m
p5.Vector.prototype.mult: n is undefined or not a finite number
    [32m  ✓[0m[90m should not change x, y, z if no argument is given[0m
p5.Vector.prototype.mult: n is undefined or not a finite number
    [32m  ✓[0m[90m should not change x, y, z if n is not a finite number[0m
[0m      with scalar[0m
      [32m  ✓[0m[90m multiply the x, y, z with the scalar[0m
[0m      p5.Vector.mult(v, n)[0m
      [32m  ✓[0m[90m should return a new p5.Vector[0m
      [32m  ✓[0m[90m should multiply the scalar[0m
[0m    div()[0m
    [32m  ✓[0m[90m should return the same object[0m
p5.Vector.prototype.div: n is undefined or not a finite number
    [32m  ✓[0m[90m should not change x, y, z if no argument is given[0m
p5.Vector.prototype.div: n is undefined or not a finite number
    [32m  ✓[0m[90m should not change x, y, z if n is not a finite number[0m
[0m      with scalar[0m
      [32m  ✓[0m[90m divide the x, y, z with the scalar[0m
p5.Vector.prototype.div: divide by 0
      [32m  ✓[0m[90m should not change x, y, z if n is 0[0m
[0m      p5.Vector.div(v, n)[0m
      [32m  ✓[0m[90m should not be undefined[0m
      [32m  ✓[0m[90m should return a new p5.Vector[0m
      [32m  ✓[0m[90m should divide the scalar[0m
[0m    dot[0m
    [32m  ✓[0m[90m should return a number[0m
[0m      with p5.Vector[0m
      [32m  ✓[0m[90m should be the dot product of the vector[0m
[0m      with x, y, z[0m
      [32m  ✓[0m[90m should be the dot product with x, y[0m
      [32m  ✓[0m[90m should be the dot product with x, y, z[0m
[0m      p5.Vector.dot(v, n)[0m
      [32m  ✓[0m[90m should return a number[0m
      [32m  ✓[0m[90m should be the dot product of the two vectors[0m
[0m    cross[0m
    [32m  ✓[0m[90m should return a new product[0m
[0m      with p5.Vector[0m
      [32m  ✓[0m[90m should cross x, y, z  from the vector argument[0m
[0m      p5.Vector.cross(v1, v2)[0m
      [32m  ✓[0m[90m should not be undefined[0m
      [32m  ✓[0m[90m should return neither v1 nor v2[0m
      [32m  ✓[0m[90m should the cross product of v1 and v2[0m
[0m    dist[0m
    [32m  ✓[0m[90m should return a number[0m
    [32m  ✓[0m[90m should return distance between two vectors[0m
    [32m  ✓[0m[90m should return distance between two vectors[0m
    [32m  ✓[0m[90m should be commutative[0m
[0m    p5.Vector.dist(v1, v2)[0m
    [32m  ✓[0m[90m should return a number[0m
    [32m  ✓[0m[90m should be commutative[0m
[0m    normalize[0m
    [32m  ✓[0m[90m should return the same object[0m
[0m      with unit vector[0m
      [32m  ✓[0m[90m should not change the vector[0m
[0m      with 2,2,1[0m
      [32m  ✓[0m[90m should normalize to 0.66,0.66,0.33[0m
[0m    limit[0m
    [32m  ✓[0m[90m should return the same object[0m
[0m      with a vector larger than the limit[0m
      [32m  ✓[0m[90m should limit the vector[0m
[0m      with a vector smaller than the limit[0m
      [32m  ✓[0m[90m should not limit the vector[0m
[0m    setMag[0m
    [32m  ✓[0m[90m should return the same object[0m
    [32m  ✓[0m[90m should set the magnitude of the vector[0m
    [32m  ✓[0m[90m should set the magnitude of the vector[0m
[0m    heading[0m
    [32m  ✓[0m[90m should return a number[0m
    [32m  ✓[0m[90m heading for vector pointing right is 0[0m
    [32m  ✓[0m[90m heading for vector pointing down is PI/2[0m
    [32m  ✓[0m[90m heading for vector pointing left is PI[0m
[0m    rotate[0m
    [32m  ✓[0m[90m should return the same object[0m
    [32m  ✓[0m[90m should rotate the vector[0m
    [32m  ✓[0m[90m should rotate the vector[0m
[0m    lerp[0m
    [32m  ✓[0m[90m should return the same object[0m
[0m      with x, y, z, amt[0m
      [32m  ✓[0m[90m should lerp x by amt[0m
      [32m  ✓[0m[90m should lerp y by amt[0m
      [32m  ✓[0m[90m should lerp z by amt[0m
[0m      with no amt[0m
      [32m  ✓[0m[90m should assume 0 amt[0m
[0m    p5.Vector.lerp(v1, v2, amt)[0m
    [32m  ✓[0m[90m should not be undefined[0m
    [32m  ✓[0m[90m should be a p5.Vector[0m
    [32m  ✓[0m[90m should return neither v1 nor v2[0m
    [32m  ✓[0m[90m should res to be [1, 1, 1][0m
[0m    p5.Vector.fromAngle(angle)[0m
    [32m  ✓[0m[90m should be a p5.Vector with values (0,1)[0m
[0m    p5.Vector.random2D()[0m
    [32m  ✓[0m[90m should be a unit p5.Vector[0m
[0m    p5.Vector.random3D()[0m
    [32m  ✓[0m[90m should be a unit p5.Vector[0m
[0m    v1.angleBetween(v2)[0m
    [32m  ✓[0m[90m should be a Number[0m
[0m      with [1,0,0] and [2,2,0][0m
      [32m  ✓[0m[90m should be 45 deg difference[0m
[0m      with [2,0,0] and [-2,0,0][0m
      [32m  ✓[0m[90m should be 180 deg difference[0m
[0m      with [2,0,0] and [-2,-2,0][0m
      [32m  ✓[0m[90m should be 135 deg difference[0m
      [32m  ✓[0m[90m should be commutative[0m
[0m    array[0m
    [32m  ✓[0m[90m should return an array[0m
    [32m  ✓[0m[90m should return an with the x y and z components[0m
[0m  Random[0m
[0m    p5.prototype.random[0m
[0m      random()[0m
      [32m  ✓[0m[90m should return a number[0m
      [32m  ✓[0m[90m should return a number 0 <= n < 1[0m
      [32m  ✓[0m[90m should return same sequence of numbers[0m
[0m      random(5)[0m
      [32m  ✓[0m[90m should return a number 0 <= n < 5[0m
[0m      random(1, 10)[0m
      [32m  ✓[0m[90m should return a number 1 <= n < 10[0m
[0m      random(["apple", "pear", "orange", "grape"])[0m
      [32m  ✓[0m[90m should return a fruit[0m
[0m  Trigonometry[0m
[0m    p5.prototype.angleMode[0m
    [32m  ✓[0m[90m should set constant to DEGREES[0m
    [32m  ✓[0m[90m should set constant to RADIANS[0m
    [32m  ✓[0m[90m should always be RADIANS or DEGREES[0m
[0m    p5.prototype.degrees[0m
    [32m  ✓[0m[90m should return the angle in radians when angleMode is DEGREES[0m
    [32m  ✓[0m[90m should return the angle in radians when angleMode is RADIANS[0m
[0m    p5.prototype.radians[0m
    [32m  ✓[0m[90m should return the angle in degrees when angleMode is RADIANS[0m
    [32m  ✓[0m[90m should return the angle in degrees when angleMode is DEGREES[0m
[0m    p5.prototype.asin[0m
    [32m  ✓[0m[90m should handle degrees[0m
    [32m  ✓[0m[90m should handle radians[0m
[0m    p5.prototype.atan[0m
    [32m  ✓[0m[90m should handle degrees[0m
    [32m  ✓[0m[90m should handle radians[0m
[0m    p5.prototype.acos[0m
    [32m  ✓[0m[90m should handle degrees[0m
    [32m  ✓[0m[90m should handle radians[0m
[0m    p5.prototype.sin[0m
    [32m  ✓[0m[90m should handle degrees[0m
    [32m  ✓[0m[90m should handle radians[0m
[0m    p5.prototype.cos[0m
    [32m  ✓[0m[90m should handle degrees[0m
    [32m  ✓[0m[90m should handle radians[0m
    [32m  ✓[0m[90m should handle degrees[0m
[0m    p5.prototype.tan[0m
    [32m  ✓[0m[90m should handle radians[0m
[0m    p5.prototype.atan2[0m
    [32m  ✓[0m[90m should handle degrees[0m
    [32m  ✓[0m[90m should handle radians[0m
[0m  loadFont[0m

  [32m  ✓[0m[90m _friendlyFileLoadError is called[0m

  [32m  ✓[0m[90m error prevents sketch continuing[0m[33m (54ms)[0m

  [32m  ✓[0m[90m error callback is called[0m[33m (55ms)[0m
  [32m  ✓[0m[90m loading correctly triggers setup[0m
  [32m  ✓[0m[90m success callback is called[0m[33m (58ms)[0m
  [32m  ✓[0m[90m returns a p5.Font object[0m
  [32m  ✓[0m[90m passes a p5.Font object to success callback[0m
[0m  Array[0m
[0m    p5.prototype.append[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return an array with appended value[0m
[0m    p5.prototype.arrayCopy[0m
    [32m  ✓[0m[90m should be a function[0m
[0m      src, dst[0m
      [32m  ✓[0m[90m should return fully copied array[0m
[0m      src, dst, len[0m
      [32m  ✓[0m[90m should return an array with first 2 elements copied over[0m
      [32m  ✓[0m[90m should return an array with first 4 elements copied over[0m
[0m      src, srcPosition, dst, dstPosition, length[0m
      [32m  ✓[0m[90m should copy src[1 - 2] to dst[0 - 1][0m
      [32m  ✓[0m[90m should copy src[1 - 2] to dst [1 - 2][0m
      [32m  ✓[0m[90m should copy src[3 - 4] to dst[0 - 1][0m
[0m    p5.prototype.concat[0m
    [32m  ✓[0m[90m should concat empty arrays[0m
    [32m  ✓[0m[90m should concat arrays[0m
[0m    p5.prototype.reverse[0m
    [32m  ✓[0m[90m should reverse empty array[0m
    [32m  ✓[0m[90m should reverse array[0m
[0m    p5.prototype.shorten[0m
    [32m  ✓[0m[90m should not have error for shortening empty array[0m
    [32m  ✓[0m[90m should shorten array[0m
[0m    p5.prototype.sort[0m
    [32m  ✓[0m[90m should not have error for sorting empty array[0m
    [32m  ✓[0m[90m should sort alphabetic array lexicographically[0m
    [32m  ✓[0m[90m should sort numerical array from smallest to largest[0m
    [32m  ✓[0m[90m should sort numerical array from smallest to largest for only first 2 elements[0m
[0m    p5.prototype.splice[0m
    [32m  ✓[0m[90m should insert 4 into position 1[0m
    [32m  ✓[0m[90m should splice in array of values[0m
[0m    p5.prototype.subset[0m
    [32m  ✓[0m[90m should get subset from index 1 to end[0m
    [32m  ✓[0m[90m should subset arr[1 - 2][0m
[0m  String functions[0m
[0m    p5.prototype.join[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return joined string[0m
[0m    p5.prototype.match[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return correct index of match strings[0m
[0m    p5.prototype.matchAll[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return correct array of strings[0m
[0m    p5.prototype.nf[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return correct string[0m
    [32m  ✓[0m[90m should return correct string[0m
[0m    p5.prototype.nfc[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return correct string[0m
    [32m  ✓[0m[90m should return correct string[0m
[0m    p5.prototype.nfp[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return correct string[0m
    [32m  ✓[0m[90m should return correct string[0m
[0m    p5.prototype.nfs[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return correct string[0m
    [32m  ✓[0m[90m should return correct string[0m
[0m    p5.prototype.split[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return correct index of match strings[0m
[0m    p5.prototype.splitTokens[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return correct index of match strings[0m
[0m    p5.prototype.trim[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return correct strings[0m
[0m  time and date[0m
[0m    p5.prototype.year[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return this year[0m
[0m    p5.prototype.day[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return todays day[0m
[0m    p5.prototype.month[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return today's month[0m
[0m    p5.prototype.hour[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return this hour[0m
[0m    p5.prototype.second[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m should return this second[0m
    [32m  ✓[0m[90m should be a function[0m
[0m    p5.prototype.minute[0m
    [32m  ✓[0m[90m should return a number that is this minute[0m
[0m    p5.prototype.millis[0m
    [32m  ✓[0m[90m should be a function[0m
    [32m  ✓[0m[90m result should be a number[0m
    [32m  ✓[0m[90m result should be greater than running time[0m[33m (50ms)[0m
    [32m  ✓[0m[90m result should be > newResult[0m[33m (50ms)[0m
[0m  p5.Matrix[0m
[0m    construction[0m
    [32m  ✓[0m[90m new p5.Matrix()[0m
    [32m  ✓[0m[90m new p5.Matrix(array)[0m
    [32m  ✓[0m[90m new p5.Matrix(mat3)[0m
    [32m  ✓[0m[90m identity()[0m
[0m    set[0m
    [32m  ✓[0m[90m p5.Matrix[0m
    [32m  ✓[0m[90m array[0m
    [32m  ✓[0m[90m arguments[0m
[0m    get / copy[0m
    [32m  ✓[0m[90m get[0m
    [32m  ✓[0m[90m copy[0m
[0m    mult[0m
    [32m  ✓[0m[90m self[0m
    [32m  ✓[0m[90m p5.Matrix[0m
    [32m  ✓[0m[90m array[0m
    [32m  ✓[0m[90m arguments[0m
[0m    apply[0m
    [32m  ✓[0m[90m self[0m
    [32m  ✓[0m[90m p5.Matrix[0m
    [32m  ✓[0m[90m array[0m
    [32m  ✓[0m[90m arguments[0m
[0m    scale[0m
    [32m  ✓[0m[90m p5.Vector[0m
    [32m  ✓[0m[90m array[0m
    [32m  ✓[0m[90m arguments[0m
[0m    rotate[0m
    [32m  ✓[0m[90m p5.Vector[0m
    [32m  ✓[0m[90m array[0m
    [32m  ✓[0m[90m arguments[0m
[0m  p5.Camera[0m
[0m    createCamera()[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m creates a p5.Camera object[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m createCamera attaches p5.Camera to renderer[0m
[0m    Rotation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Pan() with positive parameter sets correct matrix w/o changing     eyeXYZ or upXYZ[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Pan() with negative parameter sets correct matrix w/o changing     eyeXYZ or upXYZ[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Pan(0) sets correct matrix w/o changing eyeXYZ or upXYZ[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Tilt() with positive parameter sets correct Matrix w/o     changing eyeXYZ[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Tilt() with negative parameter sets correct matrix w/o     changing eyeXYZ[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Tilt(0) sets correct matrix w/o changing eyeXYZ[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m LookAt() should set centerXYZ without changing eyeXYZ or     upXYZ[0m
[0m    Rotation with angleMode(DEGREES)[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Pan() with positive parameter sets correct matrix w/o changing     eyeXYZ or upXYZ[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Tilt() with positive parameter sets correct Matrix w/o     changing eyeXYZ[0m
[0m    Position / Orientation[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Move() with positive parameters sets correct matrix[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Move() with negative parameters sets correct matrix[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Move(0,0,0) sets correct matrix[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m SetPosition() with positive parameters sets correct matrix[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m SetPosition() with negative parameters sets correct matrix[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m SetPosition(0,0,0) sets correct matrix[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m _orbit(1,0,0) sets correct matrix[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m _orbit(0,1,0) sets correct matrix[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m _orbit(0,0,1) sets correct matrix[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m _orbit(-1,0,0) sets correct matrix[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m _orbit(0,-1,0) sets correct matrix[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m _orbit(0,0,-1) sets correct matrix[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m _orbit() ensures altitude phi <= PI[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m _orbit() ensures altitude phi > 0[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m _orbit() ensures radius > 0[0m
[0m      Camera()[0m
p5.RendererGL: enabled webgl context
      [32m  ✓[0m[90m Camera() with positive parameters sets eye, center, and       up XYZ properties[0m
p5.RendererGL: enabled webgl context
      [32m  ✓[0m[90m Camera() with negative parameters sets eye, center, and       up XYZ properties[0m
[0m    Projection[0m
[0m      ortho()[0m
p5.RendererGL: enabled webgl context
      [32m  ✓[0m[90m ortho() sets renderer uPMatrix[0m
p5.RendererGL: enabled webgl context
      [32m  ✓[0m[90m ortho() sets projection matrix correctly[0m
p5.RendererGL: enabled webgl context
      [32m  ✓[0m[90m ortho() with no parameters specified (sets default)[0m
[0m      perspective()[0m
p5.RendererGL: enabled webgl context
      [32m  ✓[0m[90m perspective() sets renderer uPMatrix[0m
p5.RendererGL: enabled webgl context
      [32m  ✓[0m[90m perspective() sets projection matrix correctly[0m
p5.RendererGL: enabled webgl context
      [32m  ✓[0m[90m perspective() with no parameters specified (sets default)[0m
[0m    Helper Functions[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m copy() returns a new p5.Camera object[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m _getLocalAxes() returns three normalized, orthogonal vectors[0m
[0m    RendererGL Current Camera[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m _isActive() returns true for a camera created with createCamera(),     and false for another p5.Camera[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m setCamera() correctly sets RendererGL current camera[0m
p5.RendererGL: enabled webgl context
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Camera's Renderer is correctly set after setAttributes[0m
[0m  p5.RendererGL[0m
[0m    createCanvas(w, h, WEBGL)[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m creates a p5.RendererGL renderer[0m
[0m    default stroke shader[0m
    [32m  ✓[0m[90m check activate and deactivating fill and stroke[0m
[0m    push() and pop() work in WEBGL Mode[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m push/pop and translation works as expected in WEBGL Mode[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m push/pop and directionalLight() works[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m push/pop and ambientLight() works[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m push/pop and pointLight() works[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m push/pop and pointLight() works[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m push/pop and texture() works[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m push/pop and shader() works with fill[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m push/pop builds/unbuilds stack properly[0m
[0m    loadpixels()[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m loadPixels color check[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m get() singlePixel color and size, with loadPixels[0m
[0m    get()[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m get() size check[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m get() can create p5.Image[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m get() singlePixel color and size[0m
[0m    blendMode()[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m blendMode sets _curBlendMode correctly[0m
p5.RendererGL: enabled webgl context
BURN, OVERLAY, HARD_LIGHT, SOFT_LIGHT, and DODGE only work for blendMode in 2D mode.
BURN, OVERLAY, HARD_LIGHT, SOFT_LIGHT, and DODGE only work for blendMode in 2D mode.
BURN, OVERLAY, HARD_LIGHT, SOFT_LIGHT, and DODGE only work for blendMode in 2D mode.
BURN, OVERLAY, HARD_LIGHT, SOFT_LIGHT, and DODGE only work for blendMode in 2D mode.
BURN, OVERLAY, HARD_LIGHT, SOFT_LIGHT, and DODGE only work for blendMode in 2D mode.
    [32m  ✓[0m[90m blendMode doesnt change when mode unavailable in 3D[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m blendModes change pixel colors as expected[0m[31m (619ms)[0m
[0m  p5.Shader[0m
[0m    Shader[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Light Shader[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Color Shader definition[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Immediate Mode Shader definition[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Normal Shader definition[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Color Shader is set after fill()[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Normal Shader is set after normalMaterial()[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Light shader set after ambientMaterial()[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Light shader set after specularMaterial()[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Able to setUniform empty arrays[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Able to set shininess[0m
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Shader is reset after resetShader is called[0m
[0m  p5.Texture[0m
[0m    p5.Texture[0m
p5.RendererGL: enabled webgl context
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Create and cache a single texture with p5.Image[0m
p5.RendererGL: enabled webgl context
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Create and cache multiple p5.Image textures[0m
p5.RendererGL: enabled webgl context
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Set filter mode to linear[0m
p5.RendererGL: enabled webgl context
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Set filter mode to nearest[0m
p5.RendererGL: enabled webgl context
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Set wrap mode to clamp[0m
p5.RendererGL: enabled webgl context
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Set wrap mode to repeat[0m
p5.RendererGL: enabled webgl context
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Set wrap mode to mirror[0m
p5.RendererGL: enabled webgl context
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Set textureMode to NORMAL[0m
p5.RendererGL: enabled webgl context
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Set textureMode to IMAGE[0m
p5.RendererGL: enabled webgl context
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Set global wrap mode to clamp[0m
p5.RendererGL: enabled webgl context
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Set global wrap mode to repeat[0m
p5.RendererGL: enabled webgl context
p5.RendererGL: enabled webgl context
    [32m  ✓[0m[90m Set global wrap mode to mirror[0m
[0m  WebGL immediate mode shapes[0m
p5.RendererGL: enabled webgl context
  [32m  ✓[0m[90m fills concave beginShape(CLOSE) polygons without triangle-fan artifacts[0m[31m (384ms)[0m
p5.RendererGL: enabled webgl context
  [32m  ✓[0m[90m fills reversed concave beginShape(CLOSE) polygons without artifacts[0m[31m (237ms)[0m
p5.RendererGL: enabled webgl context
  [32m  ✓[0m[90m keeps explicit TRIANGLE_FAN behavior[0m[31m (231ms)[0m
[0m  Test in preload() with success callback[0m
  [32m  ✓[0m[90m Load asynchronously and use success callback[0m
[0m  setup() after preload() with success callback[0m
  [32m  ✓[0m[90m should be loaded if preload() finished[0m
[0m  setup() after preload() without success callback[0m
  [32m  ✓[0m[90m should be loaded now preload() finished[0m
[36m [0m[36m 3 pending[0m
[92m [0m[32m 908 passing[0m[90m (9s)[0m

Running "mochaTest:test" (mochaTest) task


  helpers/modeAdjust
    ✓ should set mode to corner
    ✓ should set mode to corners
    ✓ should set mode to radius
    ✓ should set mode to center

  docs preprocessor
    mergeOverloadedMethods()
      ✓ should merge methods with the same name
      ✓ should not merge methods from different classes
      ✓ should not merge properties
    renderDescriptionsAsMarkdown
      ✓ should work


  8 passing (15ms)


Done.
No test files to reset
+ cd /testbed
+ git config --global --add safe.directory /testbed
+ cd /testbed
+ echo 'No test files to reset'
+ git apply --verbose --reject -
Checking patch test/manual-test-examples/webgl/immediateMode/customShapes/index.html...
Checking patch test/manual-test-examples/webgl/immediateMode/customShapes/sketch.js...
Applied patch test/manual-test-examples/webgl/immediateMode/customShapes/index.html cleanly.
Applied patch test/manual-test-examples/webgl/immediateMode/customShapes/sketch.js cleanly.
+ : '>>>>> Start Test Output'
+ sed -i 's/concurrency:[[:space:]]*[0-9][0-9]*/concurrency: 1/g' Gruntfile.js
+ stdbuf -o 1M ./node_modules/.bin/grunt test --quiet --force
(node:38) Warning: Accessing non-existent property 'cat' of module exports inside circular dependency
(Use `node --trace-warnings ...` to show where the warning was created)
(node:38) Warning: Accessing non-existent property 'cd' of module exports inside circular dependency
(node:38) Warning: Accessing non-existent property 'chmod' of module exports inside circular dependency
(node:38) Warning: Accessing non-existent property 'cp' of module exports inside circular dependency
(node:38) Warning: Accessing non-existent property 'dirs' of module exports inside circular dependency
(node:38) Warning: Accessing non-existent property 'pushd' of module exports inside circular dependency
(node:38) Warning: Accessing non-existent property 'popd' of module exports inside circular dependency
(node:38) Warning: Accessing non-existent property 'echo' of module exports inside circular dependency
(node:38) Warning: Accessing non-existent property 'tempdir' of module exports inside circular dependency
(node:38) Warning: Accessing non-existent property 'pwd' of module exports inside circular dependency
(node:38) Warning: Accessing non-existent property 'exec' of module exports inside circular dependency
(node:38) Warning: Accessing non-existent property 'ls' of module exports inside circular dependency
(node:38) Warning: Accessing non-existent property 'find' of module exports inside circular dependency
(node:38) Warning: Accessing non-existent property 'grep' of module exports inside circular dependency
(node:38) Warning: Accessing non-existent property 'head' of module exports inside circular dependency
(node:38) Warning: Accessing non-existent property 'ln' of module exports inside circular dependency
(node:38) Warning: Accessing non-existent property 'mkdir' of module exports inside circular dependency
(node:38) Warning: Accessing non-existent property 'rm' of module exports inside circular dependency
(node:38) Warning: Accessing non-existent property 'mv' of module exports inside circular dependency
(node:38) Warning: Accessing non-existent property 'sed' of module exports inside circular dependency
(node:38) Warning: Accessing non-existent property 'set' of module exports inside circular dependency
(node:38) Warning: Accessing non-existent property 'sort' of module exports inside circular dependency
(node:38) Warning: Accessing non-existent property 'tail' of module exports inside circular dependency
(node:38) Warning: Accessing non-existent property 'test' of module exports inside circular dependency
(node:38) Warning: Accessing non-existent property 'to' of module exports inside circular dependency
(node:38) Warning: Accessing non-existent property 'toEnd' of module exports inside circular dependency
(node:38) Warning: Accessing non-existent property 'touch' of module exports inside circular dependency
(node:38) Warning: Accessing non-existent property 'uniq' of module exports inside circular dependency
(node:38) Warning: Accessing non-existent property 'which' of module exports inside circular dependency
(node:38) UnhandledPromiseRejectionWarning: Error: Protocol error (Runtime.callFunctionOn): Object reference chain is too long
    at /testbed/node_modules/puppeteer/lib/Connection.js:183:56
    at new Promise (<anonymous>)
    at CDPSession.send (/testbed/node_modules/puppeteer/lib/Connection.js:182:12)
    at JSHandle.jsonValue (/testbed/node_modules/puppeteer/lib/JSHandle.js:87:43)
    at JSHandle.<anonymous> (/testbed/node_modules/puppeteer/lib/helper.js:109:23)
    at /testbed/tasks/test/mocha-chrome.js:48:61
    at /testbed/node_modules/promise-map-series/index.js:11:14
    at tryCatch (/testbed/node_modules/rsvp/dist/rsvp.js:525:12)
    at invokeCallback (/testbed/node_modules/rsvp/dist/rsvp.js:538:13)
    at /testbed/node_modules/rsvp/dist/rsvp.js:606:14
    at flush (/testbed/node_modules/rsvp/dist/rsvp.js:2415:5)
    at processTicksAndRejections (internal/process/task_queues.js:77:11)
(node:38) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:38) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
(node:38) UnhandledPromiseRejectionWarning: Error: Protocol error (Runtime.callFunctionOn): Object reference chain is too long
    at /testbed/node_modules/puppeteer/lib/Connection.js:183:56
    at new Promise (<anonymous>)
    at CDPSession.send (/testbed/node_modules/puppeteer/lib/Connection.js:182:12)
    at JSHandle.jsonValue (/testbed/node_modules/puppeteer/lib/JSHandle.js:87:43)
    at JSHandle.<anonymous> (/testbed/node_modules/puppeteer/lib/helper.js:109:23)
    at /testbed/tasks/test/mocha-chrome.js:48:61
    at /testbed/node_modules/promise-map-series/index.js:11:14
    at tryCatch (/testbed/node_modules/rsvp/dist/rsvp.js:525:12)
    at invokeCallback (/testbed/node_modules/rsvp/dist/rsvp.js:538:13)
    at /testbed/node_modules/rsvp/dist/rsvp.js:606:14
    at flush (/testbed/node_modules/rsvp/dist/rsvp.js:2415:5)
    at processTicksAndRejections (internal/process/task_queues.js:77:11)
(node:38) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2)
(node:38) UnhandledPromiseRejectionWarning: Error: Protocol error (Runtime.callFunctionOn): Object reference chain is too long
    at /testbed/node_modules/puppeteer/lib/Connection.js:183:56
    at new Promise (<anonymous>)
    at CDPSession.send (/testbed/node_modules/puppeteer/lib/Connection.js:182:12)
    at JSHandle.jsonValue (/testbed/node_modules/puppeteer/lib/JSHandle.js:87:43)
    at JSHandle.<anonymous> (/testbed/node_modules/puppeteer/lib/helper.js:109:23)
    at /testbed/tasks/test/mocha-chrome.js:48:61
    at /testbed/node_modules/promise-map-series/index.js:11:14
    at tryCatch (/testbed/node_modules/rsvp/dist/rsvp.js:525:12)
    at invokeCallback (/testbed/node_modules/rsvp/dist/rsvp.js:538:13)
    at /testbed/node_modules/rsvp/dist/rsvp.js:606:14
    at flush (/testbed/node_modules/rsvp/dist/rsvp.js:2415:5)
    at processTicksAndRejections (internal/process/task_queues.js:77:11)
(node:38) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 3)
(node:38) UnhandledPromiseRejectionWarning: Error: Protocol error (Runtime.callFunctionOn): Object reference chain is too long
    at /testbed/node_modules/puppeteer/lib/Connection.js:183:56
    at new Promise (<anonymous>)
    at CDPSession.send (/testbed/node_modules/puppeteer/lib/Connection.js:182:12)
    at JSHandle.jsonValue (/testbed/node_modules/puppeteer/lib/JSHandle.js:87:43)
    at JSHandle.<anonymous> (/testbed/node_modules/puppeteer/lib/helper.js:109:23)
    at /testbed/tasks/test/mocha-chrome.js:48:61
    at /testbed/node_modules/promise-map-series/index.js:11:14
    at tryCatch (/testbed/node_modules/rsvp/dist/rsvp.js:525:12)
    at invokeCallback (/testbed/node_modules/rsvp/dist/rsvp.js:538:13)
    at /testbed/node_modules/rsvp/dist/rsvp.js:606:14
    at flush (/testbed/node_modules/rsvp/dist/rsvp.js:2415:5)
    at processTicksAndRejections (internal/process/task_queues.js:77:11)
(node:38) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 4)
(node:38) UnhandledPromiseRejectionWarning: Error: Protocol error (Runtime.callFunctionOn): Object reference chain is too long
    at /testbed/node_modules/puppeteer/lib/Connection.js:183:56
    at new Promise (<anonymous>)
    at CDPSession.send (/testbed/node_modules/puppeteer/lib/Connection.js:182:12)
    at JSHandle.jsonValue (/testbed/node_modules/puppeteer/lib/JSHandle.js:87:43)
    at JSHandle.<anonymous> (/testbed/node_modules/puppeteer/lib/helper.js:109:23)
    at /testbed/tasks/test/mocha-chrome.js:48:61
    at /testbed/node_modules/promise-map-series/index.js:11:14
    at tryCatch (/testbed/node_modules/rsvp/dist/rsvp.js:525:12)
    at invokeCallback (/testbed/node_modules/rsvp/dist/rsvp.js:538:13)
    at /testbed/node_modules/rsvp/dist/rsvp.js:606:14
    at flush (/testbed/node_modules/rsvp/dist/rsvp.js:2415:5)
    at processTicksAndRejections (internal/process/task_queues.js:77:11)
(node:38) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 5)
(node:38) UnhandledPromiseRejectionWarning: Error: Protocol error (Runtime.callFunctionOn): Object reference chain is too long
    at /testbed/node_modules/puppeteer/lib/Connection.js:183:56
    at new Promise (<anonymous>)
    at CDPSession.send (/testbed/node_modules/puppeteer/lib/Connection.js:182:12)
    at JSHandle.jsonValue (/testbed/node_modules/puppeteer/lib/JSHandle.js:87:43)
    at JSHandle.<anonymous> (/testbed/node_modules/puppeteer/lib/helper.js:109:23)
    at /testbed/tasks/test/mocha-chrome.js:48:61
    at /testbed/node_modules/promise-map-series/index.js:11:14
    at tryCatch (/testbed/node_modules/rsvp/dist/rsvp.js:525:12)
    at invokeCallback (/testbed/node_modules/rsvp/dist/rsvp.js:538:13)
    at /testbed/node_modules/rsvp/dist/rsvp.js:606:14
    at flush (/testbed/node_modules/rsvp/dist/rsvp.js:2415:5)
    at processTicksAndRejections (internal/process/task_queues.js:77:11)
(node:38) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 6)
(node:38) UnhandledPromiseRejectionWarning: Error: Protocol error (Runtime.callFunctionOn): Object reference chain is too long
    at /testbed/node_modules/puppeteer/lib/Connection.js:183:56
    at new Promise (<anonymous>)
    at CDPSession.send (/testbed/node_modules/puppeteer/lib/Connection.js:182:12)
    at JSHandle.jsonValue (/testbed/node_modules/puppeteer/lib/JSHandle.js:87:43)
    at JSHandle.<anonymous> (/testbed/node_modules/puppeteer/lib/helper.js:109:23)
    at /testbed/tasks/test/mocha-chrome.js:48:61
    at /testbed/node_modules/promise-map-series/index.js:11:14
    at tryCatch (/testbed/node_modules/rsvp/dist/rsvp.js:525:12)
    at invokeCallback (/testbed/node_modules/rsvp/dist/rsvp.js:538:13)
    at /testbed/node_modules/rsvp/dist/rsvp.js:606:14
    at flush (/testbed/node_modules/rsvp/dist/rsvp.js:2415:5)
    at processTicksAndRejections (internal/process/task_queues.js:77:11)
(node:38) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 7)
(node:38) UnhandledPromiseRejectionWarning: Error: Protocol error (Runtime.callFunctionOn): Object reference chain is too long
    at /testbed/node_modules/puppeteer/lib/Connection.js:183:56
    at new Promise (<anonymous>)
    at CDPSession.send (/testbed/node_modules/puppeteer/lib/Connection.js:182:12)
    at JSHandle.jsonValue (/testbed/node_modules/puppeteer/lib/JSHandle.js:87:43)
    at JSHandle.<anonymous> (/testbed/node_modules/puppeteer/lib/helper.js:109:23)
    at /testbed/tasks/test/mocha-chrome.js:48:61
    at /testbed/node_modules/promise-map-series/index.js:11:14
    at tryCatch (/testbed/node_modules/rsvp/dist/rsvp.js:525:12)
    at invokeCallback (/testbed/node_modules/rsvp/dist/rsvp.js:538:13)
    at /testbed/node_modules/rsvp/dist/rsvp.js:606:14
    at flush (/testbed/node_modules/rsvp/dist/rsvp.js:2415:5)
    at processTicksAndRejections (internal/process/task_queues.js:77:11)
(node:38) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 8)
(node:38) UnhandledPromiseRejectionWarning: Error: Protocol error (Runtime.callFunctionOn): Object reference chain is too long
    at /testbed/node_modules/puppeteer/lib/Connection.js:183:56
    at new Promise (<anonymous>)
    at CDPSession.send (/testbed/node_modules/puppeteer/lib/Connection.js:182:12)
    at JSHandle.jsonValue (/testbed/node_modules/puppeteer/lib/JSHandle.js:87:43)
    at JSHandle.<anonymous> (/testbed/node_modules/puppeteer/lib/helper.js:109:23)
    at /testbed/tasks/test/mocha-chrome.js:48:61
    at /testbed/node_modules/promise-map-series/index.js:11:14
    at tryCatch (/testbed/node_modules/rsvp/dist/rsvp.js:525:12)
    at invokeCallback (/testbed/node_modules/rsvp/dist/rsvp.js:538:13)
    at /testbed/node_modules/rsvp/dist/rsvp.js:606:14
    at flush (/testbed/node_modules/rsvp/dist/rsvp.js:2415:5)
    at processTicksAndRejections (internal/process/task_queues.js:77:11)
(node:38) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 9)
(node:38) UnhandledPromiseRejectionWarning: Error: Protocol error (Runtime.callFunctionOn): Object reference chain is too long
    at /testbed/node_modules/puppeteer/lib/Connection.js:183:56
    at new Promise (<anonymous>)
    at CDPSession.send (/testbed/node_modules/puppeteer/lib/Connection.js:182:12)
    at JSHandle.jsonValue (/testbed/node_modules/puppeteer/lib/JSHandle.js:87:43)
    at JSHandle.<anonymous> (/testbed/node_modules/puppeteer/lib/helper.js:109:23)
    at /testbed/tasks/test/mocha-chrome.js:48:61
    at /testbed/node_modules/promise-map-series/index.js:11:14
    at tryCatch (/testbed/node_modules/rsvp/dist/rsvp.js:525:12)
    at invokeCallback (/testbed/node_modules/rsvp/dist/rsvp.js:538:13)
    at /testbed/node_modules/rsvp/dist/rsvp.js:606:14
    at flush (/testbed/node_modules/rsvp/dist/rsvp.js:2415:5)
    at processTicksAndRejections (internal/process/task_queues.js:77:11)
(node:38) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 10)
+ : '>>>>> End Test Output'
+ echo 'No test files to reset'
