[4mRunning "yuidoc:prod" (yuidoc) task[24m
Failed to find lines for {
  name: 'Shape',
  submodules: {
    '2D Primitives': 1,
    Curves: 1,
    Vertex: 1,
    '3D Models': 1,
    '3D Primitives': 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:1357: method p5.save missing example
src/webgl/material.js:151: method p5.shader 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:265: method p5.Shader.setUniform missing example
Start YUIDoc compile...
Scanning: [36msrc/[39m, [36mlib/addons/[39m
Output: [36mdocs/reference/[39m
YUIDoc compile completed in 1.196 seconds

[4mRunning "clean:reference" (clean) task[24m
[32m>> [39m5 paths cleaned.

[4mRunning "minjson:compile" (minjson) task[24m
File "docs/reference/data.min.json" created: 1.37 MB → 938.07 kB

[4mRunning "eslint:build" (eslint) task[24m

[4mRunning "eslint:source" (eslint) task[24m

[4mRunning "eslint:test" (eslint) task[24m

[4mRunning "eslint-samples:source" (eslint-samples) task[24m

[4mRunning "browserify" task[24m
[32m>>[39m Bundle [36mlib/p5.js[39m created.

[4mRunning "browserify:min" (browserify) task[24m
[32m>>[39m Bundle [36mlib/p5.pre-min.js[39m created.

[4mRunning "uglify:dist" (uglify) task[24m
[32m>> [39m2 files created.

[4mRunning "connect:server" (connect) task[24m
Started connect web server on http://0.0.0.0:9001

[4mRunning "mocha:yui" (mocha) task[24m
Testing: http://localhost:9001/test/test-reference.html


  src/color/creating_reading.js
    alpha documentation
      ✓ example #1 works
    blue documentation
220
      ✓ example #1 works
    brightness documentation
      ✓ example #1 works
    color documentation
      ✓ example #1 works
      ✓ example #2 works
      ✓ example #3 works
      ✓ example #4 works
      ✓ example #5 works
      ✓ example #6 works
      ✓ example #7 works
      ✓ example #8 works
    green documentation
75
      ✓ example #1 works
    hue documentation
      ✓ example #1 works
    lerpColor documentation
      ✓ example #1 works
    lightness documentation
      ✓ example #1 works
    red documentation
255
      ✓ example #1 works
0.4980392156862745
      ✓ example #2 works
    saturation documentation
      ✓ example #1 works

  src/color/p5.Color.js
    toString documentation
      ✓ example #1 works
    setRed documentation
      ✓ example #1 works
    setGreen documentation
      ✓ example #1 works
    setBlue documentation
      ✓ example #1 works
    setAlpha documentation
      ✓ example #1 works

  src/color/setting.js
    background documentation
      ✓ example #1 works
      ✓ example #2 works
      ✓ example #3 works
      ✓ example #4 works
      ✓ example #5 works
      ✓ example #6 works
      ✓ example #7 works
      ✓ example #8 works
      ✓ example #9 works
      ✓ example #10 works
      ✓ example #11 works
    clear documentation
      ✓ example #1 works
    colorMode documentation
      ✓ example #1 works
      ✓ example #2 works
      ✓ example #3 works
      ✓ example #4 works
    fill documentation
      ✓ example #1 works
      ✓ example #2 works
      ✓ example #3 works
      ✓ example #4 works
      ✓ example #5 works
      ✓ example #6 works
      ✓ example #7 works
      ✓ example #8 works
      ✓ example #9 works
      ✓ example #10 works
      ✓ example #11 works
    noFill documentation
      ✓ example #1 works
    noStroke documentation
      ✓ example #1 works
    stroke documentation
      ✓ example #1 works
      ✓ example #2 works
      ✓ example #3 works
      ✓ example #4 works
      ✓ example #5 works
      ✓ example #6 works
      ✓ example #7 works
      ✓ example #8 works
      ✓ example #9 works
      ✓ example #10 works
      ✓ example #11 works

  src/core/2d_primitives.js
    arc documentation
      ✓ example #1 works
      ✓ example #2 works
      ✓ example #3 works
      ✓ example #4 works
      ✓ example #5 works
    ellipse documentation
      ✓ example #1 works
    line documentation
      ✓ example #1 works
      ✓ example #2 works
    point documentation
      ✓ example #1 works
    quad documentation
      ✓ example #1 works
    rect documentation
      ✓ example #1 works
      ✓ example #2 works
      ✓ example #3 works
    triangle documentation
      ✓ example #1 works

  src/core/attributes.js
    ellipseMode documentation
      ✓ example #1 works
      ✓ example #2 works
    noSmooth documentation
      ✓ example #1 works
    rectMode documentation
      ✓ example #1 works
      ✓ example #2 works
    smooth documentation
      ✓ example #1 works
    strokeCap documentation
      ✓ example #1 works
    strokeJoin documentation
      ✓ example #1 works
      ✓ example #2 works
      ✓ example #3 works
    strokeWeight documentation
      ✓ example #1 works

  src/core/constants.js
    HALF_PI documentation
      ✓ example #1 works
    PI documentation
      ✓ example #1 works
    QUARTER_PI documentation
      ✓ example #1 works
    TAU documentation
      ✓ example #1 works
    TWO_PI documentation
      ✓ example #1 works
    DEGREES documentation
      ✓ example #1 works
    RADIANS documentation
      ✓ example #1 works

  src/core/core.js
    preload documentation
      ✓ example #1 works
    setup documentation
      ✓ example #1 works
    draw documentation
      ✓ example #1 works
    remove documentation
      ✓ example #1 works

  src/core/curves.js
    bezier documentation
      ✓ example #1 works
      ✓ example #2 works
    bezierPoint documentation
      ✓ example #1 works
    bezierTangent documentation
      ✓ example #1 works
      ✓ example #2 works
    curve documentation
      ✓ example #1 works
      ✓ example #2 works
      ✓ example #3 works
    curveTightness documentation
      ✓ example #1 works
    curvePoint documentation
      ✓ example #1 works
    curveTangent documentation
      ✓ example #1 works

  src/core/environment.js
    print documentation
The value of x is 10
      ✓ example #1 works
    frameCount documentation
      ✓ example #1 works
    focused documentation
      ✓ example #1 works
    cursor documentation
      ✓ example #1 works
    frameRate documentation
      ✓ example #1 works
    noCursor documentation
      ✓ example #1 works
    displayWidth documentation
      ✓ example #1 works
    displayHeight documentation
      ✓ example #1 works
    windowWidth documentation
      ✓ example #1 works
    windowHeight documentation
      ✓ example #1 works
    windowResized documentation
      ✓ example #1 works
    fullscreen documentation
      ✓ example #1 works
    pixelDensity documentation
      ✓ example #1 works
      ✓ example #2 works
    displayDensity documentation
      ✓ example #1 works
    getURL documentation
      ✓ example #1 works
    getURLPath documentation
      ✓ example #1 works

  src/core/p5.Element.js
    elt documentation
      ✓ example #1 works
    parent documentation
      ✓ example #1 works
      ✓ example #2 works
    id documentation
      ✓ example #1 works
    class documentation
      ✓ example #1 works
    mousePressed documentation
      ✓ example #1 works
    doubleClicked documentation
      ✓ example #1 works
    mouseWheel documentation
      ✓ example #1 works
    mouseReleased documentation
      ✓ example #1 works
    mouseClicked documentation
      ✓ example #1 works
    mouseMoved documentation
      ✓ example #1 works
    mouseOver documentation
      ✓ example #1 works
    changed documentation
      ✓ example #1 works
      ✓ example #2 works
    input documentation
      ✓ example #1 works
    mouseOut documentation
      ✓ example #1 works
    touchStarted documentation
      ✓ example #1 works
    touchMoved documentation
      ✓ example #1 works
    touchEnded documentation
      ✓ example #1 works
    dragOver documentation
      ✓ example #1 works
    dragLeave documentation
      ✓ example #1 works
    drop documentation
      ✓ example #1 works

  src/core/p5.Graphics.js
    remove documentation
      ✓ example #1 works
      ✓ example #2 works

  src/core/rendering.js
    createCanvas documentation
      ✓ example #1 works
    resizeCanvas documentation
      ✓ example #1 works
    noCanvas documentation
      ✓ example #1 works
    createGraphics documentation
      ✓ example #1 works
    blendMode documentation
      ✓ example #1 works
      ✓ example #2 works

  src/core/structure.js
    noLoop documentation
      ✓ example #1 works
      ✓ example #2 works
    loop documentation
      ✓ example #1 works
    push documentation
      ✓ example #1 works
      ✓ example #2 works
    pop documentation
      ✓ example #1 works
      ✓ example #2 works
    redraw documentation
      ✓ example #1 works
      ✓ example #2 works

  src/core/transform.js
    applyMatrix documentation
      ✓ example #1 works
      ✓ example #2 works
      ✓ example #3 works
      ✓ example #4 works
    resetMatrix documentation
      ✓ example #1 works
    rotate documentation
      ✓ example #1 works
    scale documentation
      ✓ example #1 works
      ✓ example #2 works
    shearX documentation
      ✓ example #1 works
    shearY documentation
      ✓ example #1 works
    translate documentation
      ✓ example #1 works
      ✓ example #2 works
      ✓ example #3 works

  src/core/vertex.js
    beginContour documentation
      ✓ example #1 works
    beginShape documentation
      ✓ example #1 works
      ✓ example #2 works
      ✓ example #3 works
      ✓ example #4 works
      ✓ example #5 works
      ✓ example #6 works
      ✓ example #7 works
      ✓ example #8 works
      ✓ example #9 works
      ✓ example #10 works
      ✓ example #11 works
    bezierVertex documentation
      ✓ example #1 works
      ✓ example #2 works
    curveVertex documentation
      ✓ example #1 works
    endContour documentation
      ✓ example #1 works
    endShape documentation
      ✓ example #1 works
    quadraticVertex documentation
      ✓ example #1 works
      ✓ example #2 works
    vertex documentation
      ✓ example #1 works

  src/data/p5.TypedDict.js
    createStringDict documentation
true
true
      ✓ example #1 works
    createNumberDict documentation
true
true
      ✓ example #1 works
    size documentation
3
      ✓ example #1 works
    hasKey documentation
true
      ✓ example #1 works
    get documentation
true
      ✓ example #1 works
    set documentation
key:p5 value:JS
      ✓ example #1 works
    create documentation
key:p5 value:js
key:happy value:coding
      ✓ example #1 works
    clear documentation
true
false
      ✓ example #1 works
    remove documentation
key:p5 value:js
key:happy value:coding
key:happy value:coding
      ✓ example #1 works
    print documentation
key:p5 value:js
key:happy value:coding
      ✓ example #1 works
    saveTable documentation
      ✓ example #1 works
    saveJSON documentation
      ✓ example #1 works
    add documentation
7
      ✓ example #1 works
    sub documentation
3
      ✓ example #1 works
    mult documentation
8
      ✓ example #1 works
    div documentation
4
      ✓ example #1 works
    minValue documentation
-10
      ✓ example #1 works
    maxValue documentation
3
      ✓ example #1 works
    minKey documentation
1.2
      ✓ example #1 works
    maxKey documentation
4
      ✓ example #1 works

  src/events/keyboard.js
    keyIsPressed documentation
      ✓ example #1 works
    key documentation
      ✓ example #1 works
    keyCode documentation
      ✓ example #1 works
    keyPressed documentation
      ✓ example #1 works
      ✓ example #2 works
      ✓ example #3 works
    keyReleased documentation
      ✓ example #1 works
    keyTyped documentation
      ✓ example #1 works
    keyIsDown documentation
      ✓ example #1 works
      ✓ example #2 works

  src/events/mouse.js
    mouseX documentation
      ✓ example #1 works
    mouseY documentation
      ✓ example #1 works
    pmouseX documentation
0 -> 0
      ✓ example #1 works
    pmouseY documentation
0 -> 0
      ✓ example #1 works
0 -> 0
    winMouseX documentation
      ✓ example #1 works
    winMouseY documentation
      ✓ example #1 works
    pwinMouseX documentation
      ✓ example #1 works
    pwinMouseY documentation
      ✓ example #1 works
    mouseButton documentation
0
      ✓ example #1 works
0
    mouseIsPressed documentation
false
      ✓ example #1 works
false
    mouseMoved documentation
      ✓ example #1 works
      ✓ example #2 works
    mouseDragged documentation
      ✓ example #1 works
      ✓ example #2 works
    mousePressed documentation
      ✓ example #1 works
      ✓ example #2 works
    mouseReleased documentation
      ✓ example #1 works
      ✓ example #2 works
    mouseClicked documentation
      ✓ example #1 works
      ✓ example #2 works
    doubleClicked documentation
      ✓ example #1 works
      ✓ example #2 works
    mouseWheel documentation
      ✓ example #1 works

  src/events/touch.js
    touches documentation
      ✓ example #1 works
    touchStarted documentation
      ✓ example #1 works
      ✓ example #2 works
    touchMoved documentation
      ✓ example #1 works
      ✓ example #2 works
    touchEnded documentation
      ✓ example #1 works
      ✓ example #2 works

  src/image/image.js
    createImage documentation
      ✓ example #1 works
      ✓ example #2 works
      ✓ example #3 works
    saveFrames documentation
      ✓ example #1 works

  src/image/loading_displaying.js
    loadImage documentation
      ✓ example #1 works
      ✓ example #2 works
    image documentation
      ✓ example #1 works
      ✓ example #2 works
      ✓ example #3 works
      ✓ example #4 works
    tint documentation
      ✓ example #1 works
      ✓ example #2 works
      ✓ example #3 works
    noTint documentation
      ✓ example #1 works
    imageMode documentation
      ✓ example #1 works
      ✓ example #2 works
      ✓ example #3 works

  src/image/p5.Image.js
    width documentation
      ✓ example #1 works
    height documentation
      ✓ example #1 works
    pixels documentation
      ✓ example #1 works
      ✓ example #2 works
    loadPixels documentation
      ✓ example #1 works
    updatePixels documentation
      ✓ example #1 works
    get documentation
      ✓ example #1 works
    set documentation
      ✓ example #1 works
    resize documentation
      ✓ example #1 works
    copy documentation
      ✓ example #1 works
    mask documentation
      ✓ example #1 works
    filter documentation
      ✓ example #1 works
    blend documentation
      ✓ example #1 works
      ✓ example #2 works
      ✓ example #3 works
    save documentation
      ✓ example #1 works
    p5.Image documentation
      ✓ example #1 works

  src/image/pixels.js
    pixels documentation
      ✓ example #1 works
    blend documentation
      ✓ example #1 works
      ✓ example #2 works
      ✓ example #3 works
    copy documentation
      ✓ example #1 works
    filter documentation
      ✓ example #1 works
      ✓ example #2 works
      ✓ example #3 works
      ✓ example #4 works
      ✓ example #5 works
      ✓ example #6 works
      ✓ example #7 works
      ✓ example #8 works
    get documentation
      ✓ example #1 works
      ✓ example #2 works
    loadPixels documentation
      ✓ example #1 works
    set documentation
      ✓ example #1 works
      ✓ example #2 works
      ✓ example #3 works
    updatePixels documentation
      ✓ example #1 works

  src/io/files.js
    loadJSON documentation
      ✓ example #1 works
      ✓ example #2 works
    loadStrings documentation
      ✓ example #1 works
      ✓ example #2 works
    loadTable documentation
3 total rows in table
3 total columns in table
Goat,Leopard,Zebra
0
Capra hircus
Goat
1
Panthera pardus
Leopard
2
Equus zebra
Zebra
      ✓ example #1 works
    loadXML documentation
0, Capra hircus, Goat
1, Panthera pardus, Leopard
2, Equus zebra, Zebra
      ✓ example #1 works
    loadBytes documentation
3c
3f
78
6d
6c
      ✓ example #1 works
    httpGet documentation
      ✓ example #1 works
    httpPost documentation
      ✓ example #1 works
      ✓ example #2 works
    httpDo documentation
      ✓ example #1 works
    createWriter documentation
      ✓ example #1 works
    saveJSON documentation
      ✓ example #1 works
    saveStrings documentation
      ✓ example #1 works
    saveTable documentation
      ✓ example #1 works

  src/io/p5.Table.js
    addRow documentation
0
Capra hircus
Goat
1
Panthera pardus
Leopard
2
Equus zebra
Zebra
3
Canis Lupus
Wolf
      ✓ example #1 works
    removeRow documentation
1
Panthera pardus
Leopard
2
Equus zebra
Zebra
      ✓ example #1 works
    getRow documentation
1
Panthera pardus
Leopard
      ✓ example #1 works
    getRows documentation
0
Capra hircus
Unicorn
1
Panthera pardus
Unicorn
2
Equus zebra
Unicorn
      ✓ example #1 works
    findRow documentation
Equus zebra
      ✓ example #1 works
    findRows documentation
2 Goats found
      ✓ example #1 works
    matchRow documentation
Panthera pardus
      ✓ example #1 works
    matchRows documentation
Snake: Reptile
Lizard: Reptile
      ✓ example #1 works
    getColumn documentation
Capra hircus,Panthera pardus,Equus zebra
      ✓ example #1 works
    clearRows documentation
0 total rows in table
3 total columns in table
      ✓ example #1 works
    addColumn documentation
0
Capra hircus
Goat
no
1
Panthera pardus
Leopard
yes
2
Equus zebra
Zebra
no
      ✓ example #1 works
    getColumnCount documentation
      ✓ example #1 works
    getRowCount documentation
      ✓ example #1 works
    removeTokens documentation
Lion,Mammal,Snake,Reptile
      ✓ example #1 works
    trim documentation
Lion,,Mammal,Snake,Reptile
      ✓ example #1 works
    removeColumn documentation
2
      ✓ example #1 works
    set documentation
0
Canis Lupus
Wolf
1
Panthera pardus
Leopard
2
Equus zebra
Zebra
      ✓ example #1 works
    setNum documentation
0,1,2
      ✓ example #1 works
    setString documentation
0,Capra hircus,Goat,1,Panthera pardus,Leopard,2,Equus zebra,Zebra,3,Canis Lupus,Wolf
      ✓ example #1 works
    get documentation
Capra hircus
Capra hircus
      ✓ example #1 works
    getNum documentation
101
      ✓ example #1 works
    getString documentation
0
Capra hircus
Goat
1
Panthera pardus
Leopard
2
Equus zebra
Zebra
      ✓ example #1 works
    getObject documentation
[object Object]
      ✓ example #1 works
    getArray documentation
0,Capra hircus,Goat
1,Panthera pardus,Leopard
2,Equus zebra,Zebra
      ✓ example #1 works

  src/io/p5.TableRow.js
    set documentation
0,Capra hircus,Unicorn,1,Panthera pardus,Unicorn,2,Equus zebra,Unicorn
      ✓ example #1 works
    setNum documentation
10,Capra hircus,Goat,11,Panthera pardus,Leopard,12,Equus zebra,Zebra
      ✓ example #1 works
    setString documentation
0,Capra hircus,A Goat named George,1,Panthera pardus,A Leopard named George,2,Equus zebra,A Zebra named George
      ✓ example #1 works
    get documentation
Goat,Leopard,Zebra
      ✓ example #1 works
    getNum documentation
minimum id = 0, maximum id = -Infinity
      ✓ example #1 works
    getString documentation
longest: Panthera pardus
      ✓ example #1 works

  src/io/p5.XML.js
    getParent documentation
mammals
      ✓ example #1 works
    getName documentation
mammals
      ✓ example #1 works
    setName documentation
mammals
fish
      ✓ example #1 works
    hasChildren documentation
true
      ✓ example #1 works
    listChildren documentation
#text,animal,#text,animal,#text,animal,#text
      ✓ example #1 works
    getChildren documentation
Goat
Leopard
Zebra
      ✓ example #1 works
    getChild documentation
Goat
      ✓ example #1 works
Goat
      ✓ example #2 works
    addChild documentation
Zebra
      ✓ example #1 works
    removeChild documentation
,
,
Leopard
,
Zebra


      ✓ example #1 works
,
,
Leopard
,
Zebra


      ✓ example #2 works
    getAttributeCount documentation
2
      ✓ example #1 works
    listAttributes documentation
id,species
      ✓ example #1 works
    hasAttribute documentation
true
false
      ✓ example #1 works
    getNum documentation
0
      ✓ example #1 works
    getString documentation
Capra hircus
      ✓ example #1 works
    setAttribute documentation
Capra hircus
Jamides zebra
      ✓ example #1 works
    getContent documentation
Goat
      ✓ example #1 works
    setContent documentation
Goat
Goat
      ✓ example #1 works
    p5.XML documentation
0, Capra hircus, Goat
1, Panthera pardus, Leopard
2, Equus zebra, Zebra
      ✓ example #1 works

  src/math/calculation.js
    abs documentation
-3
3
      ✓ example #1 works
    ceil documentation
      ✓ example #1 works
    constrain documentation
      ✓ example #1 works
    dist documentation
      ✓ example #1 works
    exp documentation
      ✓ example #1 works
    floor documentation
      ✓ example #1 works
    lerp documentation
      ✓ example #1 works
    log documentation
      ✓ example #1 works
    mag documentation
36.05551275463989
85.44003745317531
72.80109889280519
106.3014581273465
      ✓ example #1 works
    map documentation
      ✓ example #1 works
      ✓ example #2 works
    max documentation
      ✓ example #1 works
    min documentation
      ✓ example #1 works
    norm documentation
      ✓ example #1 works
    pow documentation
      ✓ example #1 works
    round documentation
      ✓ example #1 works
    sq documentation
      ✓ example #1 works
    sqrt documentation
      ✓ example #1 works

  src/math/noise.js
    noise documentation
      ✓ example #1 works
      ✓ example #2 works
    noiseDetail documentation
      ✓ example #1 works
    noiseSeed documentation
      ✓ example #1 works

  src/math/p5.Vector.js
    toString documentation
p5.Vector Object : [20, 30, 0]
      ✓ example #1 works
      ✓ example #2 works
    set documentation
      ✓ example #1 works
      ✓ example #2 works
    copy documentation
true
      ✓ example #1 works
    add documentation
      ✓ example #1 works
p5.Vector Object : [3, 5, 7]
      ✓ example #2 works
      ✓ example #3 works
    sub documentation
      ✓ example #1 works
p5.Vector Object : [1, 1, 1]
      ✓ example #2 works
      ✓ example #3 works
    mult documentation
      ✓ example #1 works
p5.Vector Object : [2, 4, 6]
      ✓ example #2 works
      ✓ example #3 works
    div documentation
      ✓ example #1 works
p5.Vector Object : [3, 2, 1]
      ✓ example #2 works
      ✓ example #3 works
    mag documentation
      ✓ example #1 works
53.85164807134504
      ✓ example #2 works
    magSq documentation
56
      ✓ example #1 works
      ✓ example #2 works
    dot documentation
20
      ✓ example #1 works
10
      ✓ example #2 works
    cross documentation
      ✓ example #1 works
p5.Vector Object : [0, 0, 1]
      ✓ example #2 works
    dist documentation
1.4142135623730951
      ✓ example #1 works
1.4142135623730951
      ✓ example #2 works
      ✓ example #3 works
    normalize documentation
      ✓ example #1 works
      ✓ example #2 works
    limit documentation
      ✓ example #1 works
      ✓ example #2 works
    setMag documentation
      ✓ example #1 works
      ✓ example #2 works
    heading documentation
1.0303768265243125
0.8960553845713439
1.1659045405098132
      ✓ example #1 works
      ✓ example #2 works
    rotate documentation
      ✓ example #1 works
      ✓ example #2 works
    angleBetween documentation
1.5707963267948966
      ✓ example #1 works
      ✓ example #2 works
    lerp documentation
      ✓ example #1 works
p5.Vector Object : [50, 50, 0]
      ✓ example #2 works
      ✓ example #3 works
    array documentation
20,30,0
      ✓ example #1 works
10
20
30
      ✓ example #2 works
    equals documentation
true
false
      ✓ example #1 works
true
false
      ✓ example #2 works
    fromAngle documentation
      ✓ example #1 works
    random2D documentation
p5.Vector Object : [0.661240152561854, -0.750174286842715, 0]
      ✓ example #1 works
      ✓ example #2 works
    random3D documentation
p5.Vector Object : [0.18421642977836641, 0.028190973323321954, 0.9824813362210989]
      ✓ example #1 works
    p5.Vector documentation
      ✓ example #1 works

  src/math/random.js
    randomSeed documentation
      ✓ example #1 works
    random documentation
      ✓ example #1 works
      ✓ example #2 works
      ✓ example #3 works
    randomGaussian documentation
      ✓ example #1 works
      ✓ example #2 works

  src/math/trigonometry.js
    acos documentation
3.141592653589793 : -1 : 3.141592653589793
      ✓ example #1 works
3.9269908169872414 : -0.7071067811865477 : 2.3561944901923453
      ✓ example #2 works
    asin documentation
4.1887902047863905 : -0.8660254037844384 : -1.0471975511965972
      ✓ example #1 works
4.1887902047863905 : -0.8660254037844384 : -1.0471975511965972
      ✓ example #2 works
    atan documentation
4.1887902047863905 : 1.7320508075688754 : 1.0471975511965972
      ✓ example #1 works
4.1887902047863905 : 1.7320508075688754 : 1.0471975511965972
      ✓ example #2 works
    atan2 documentation
      ✓ example #1 works
    cos documentation
      ✓ example #1 works
    sin documentation
      ✓ example #1 works
    tan documentation
      ✓ example #1 works
    degrees documentation
0.7853981633974483 radians is 45 degrees
      ✓ example #1 works
    radians documentation
45 degrees is 0.7853981633974483 radians
      ✓ example #1 works
    angleMode documentation
      ✓ example #1 works

  src/typography/attributes.js
    textAlign documentation
      ✓ example #1 works
    textLeading documentation
      ✓ example #1 works
    textSize documentation
      ✓ example #1 works
    textStyle documentation
      ✓ example #1 works
    textWidth documentation
      ✓ example #1 works
    textAscent documentation
      ✓ example #1 works
    textDescent documentation
      ✓ example #1 works

  src/typography/loading_displaying.js
    loadFont documentation
      ✓ example #1 works
      ✓ example #2 works
      ✓ example #3 works
    text documentation
      ✓ example #1 works
      ✓ example #2 works
    textFont documentation
      ✓ example #1 works
      ✓ example #2 works

  src/typography/p5.Font.js
    textBounds documentation
      ✓ example #1 works
    textToPoints documentation
      ✓ example #1 works

  src/utilities/array_functions.js
    append documentation
Mango,Apple,Papaya
Mango,Apple,Papaya,Peach
      ✓ example #1 works
    arrayCopy documentation
A,B,C
1,2,3
B,C,3
      ✓ example #1 works
    concat documentation
A,B,C
1,2,3
A,B,C
1,2,3
A,B,C,1,2,3
      ✓ example #1 works
    reverse documentation
A,B,C
C,B,A
      ✓ example #1 works
    shorten documentation
A,B,C
A,B
A,B
      ✓ example #1 works
    shuffle documentation
ABC,def,p5.Vector Object : [0, 0, 0],6.283185307179586,2.718281828459045
2.718281828459045,def,p5.Vector Object : [0, 0, 0],6.283185307179586,ABC
2.718281828459045,def,p5.Vector Object : [0, 0, 0],6.283185307179586,ABC
2.718281828459045,ABC,6.283185307179586,def,p5.Vector Object : [0, 0, 0]
      ✓ example #1 works
    sort documentation
banana,apple,pear,lime
apple,banana,lime,pear
      ✓ example #1 works
2,6,1,5,14,9,8,12
1,2,5,6,14,9,8,12
      ✓ example #2 works
    splice documentation
0,1,2,3,4
A,B,C
0,1,2,A,B,C,3,4
      ✓ example #1 works
    subset documentation
1,2,3,4,5
1,2,3
3,4
      ✓ example #1 works

  src/utilities/conversion.js
    float documentation
      ✓ example #1 works
    int documentation
10
10
-10
1
0
0,1,10,9
      ✓ example #1 works
    str documentation
10
10.31
-10
true
false
true,10.3,9.8
      ✓ example #1 works
    boolean documentation
false
true
true
false
false,true,true
      ✓ example #1 works
    byte documentation
127
-128
23
23
NaN
1
0,-1,100
      ✓ example #1 works
    char documentation
A
A
A,B,C
ABC
      ✓ example #1 works
    unchar documentation
65
65,66,67
65,66,67
      ✓ example #1 works
    hex documentation
000000FF
0000FF
000000,00007F,0000FF
      ✓ example #1 works
    unhex documentation
10
255
255,170,0
      ✓ example #1 works

  src/utilities/string_functions.js
    join documentation
      ✓ example #1 works
    match documentation
      ✓ example #1 works
    matchAll documentation
      ✓ example #1 works
    nf documentation
      ✓ example #1 works
    nfc documentation
      ✓ example #1 works
    nfp documentation
      ✓ example #1 works
    nfs documentation
      ✓ example #1 works
    split documentation
      ✓ example #1 works
    splitTokens documentation
Mango, Banana, Lime
      ✓ example #1 works
    trim documentation
      ✓ example #1 works

  src/utilities/time_date.js
    day documentation
      ✓ example #1 works
    hour documentation
      ✓ example #1 works
    minute documentation
      ✓ example #1 works
    millis documentation
      ✓ example #1 works
    month documentation
      ✓ example #1 works
    second documentation
      ✓ example #1 works
    year documentation
      ✓ example #1 works

  lib/addons/p5.dom.js
    select documentation
      ✓ example #1 works
      ✓ example #2 works
    selectAll documentation
      ✓ example #1 works
      ✓ example #2 works
    removeElements documentation
      ✓ example #1 works
    createDiv documentation
      ✓ example #1 works
    createP documentation
      ✓ example #1 works
    createSpan documentation
      ✓ example #1 works
    createImg documentation
      ✓ example #1 works
    createA documentation
      ✓ example #1 works
    createSlider documentation
      ✓ example #1 works
      ✓ example #2 works
    createButton documentation
      ✓ example #1 works
    createCheckbox documentation
      ✓ example #1 works
    createSelect documentation
      ✓ example #1 works
    createRadio documentation
      ✓ example #1 works
      ✓ example #2 works
    createInput documentation
      ✓ example #1 works
    createFileInput documentation
      ✓ example #1 works
    createVideo documentation
      ✓ example #1 works
    createAudio documentation
      ✓ example #1 works
    createElement documentation
      ✓ example #1 works
    addClass documentation
      ✓ example #1 works
    removeClass documentation
      ✓ example #1 works
    child documentation
      ✓ example #1 works
      ✓ example #2 works
    center documentation
      ✓ example #1 works
    html documentation
      ✓ example #1 works
      ✓ example #2 works
    position documentation
      ✓ example #1 works
    style documentation
      ✓ example #1 works
      ✓ example #2 works
      ✓ example #3 works
      ✓ example #4 works
    attribute documentation
      ✓ example #1 works
    removeAttribute documentation
      ✓ example #1 works
    value documentation
      ✓ example #1 works
      ✓ example #2 works
    show documentation
      ✓ example #1 works
    hide documentation
      ✓ example #1 works
    size documentation
      ✓ example #1 works
    remove documentation
      ✓ example #1 works
    src documentation
      ✓ example #1 works
    play documentation
      ✓ example #1 works
    stop documentation
      ✓ example #1 works
    pause documentation
      ✓ example #1 works
    loop documentation
      ✓ example #1 works
    noLoop documentation
      ✓ example #1 works
    volume documentation
      ✓ example #1 works
      ✓ example #2 works
    time documentation
      ✓ example #1 works
    duration documentation
      ✓ example #1 works
    onended documentation
      ✓ example #1 works
    showControls documentation
      ✓ example #1 works
    hideControls documentation
      ✓ example #1 works
    addCue documentation
      ✓ example #1 works
    removeCue documentation
      ✓ example #1 works
    clearCues documentation
      ✓ example #1 works


  581 passing (29s)

[32m>> [39m581 passed! (28.91s)

[4mRunning "mocha:test" (mocha) task[24m
Testing: http://localhost:9001/test/test.html


  DOM
    p5.prototype.select
      ✓ should find elements by ID
      ✓ should return null when elements by ID are not found
      ✓ should find elements by class
      ✓ should return null when elements by class are not found
      ✓ should find elements by tag name
      ✓ should return null when elements by tag name are not found
      ✓ should create an empty node when no html is provided

  color/p5.ColorConversion
    rgbaToHSBA
      ✓ rgba converts to hsba
    hsbaToRGBA
      ✓ hsba converts to rgba
      ✓ handles maximum hue value
    hslaToRGBA
      ✓ hsla converts to rgba
      ✓ handles maximum hue value
    rgbaToHSLA
      ✓ rgba converts to hsla (low lightness)
      ✓ rgba converts to hsla (high lightness)
    hslaToHSBA
      ✓ hsla converts to hsba
    hsbaToHSLA
      ✓ hsba converts to hsla

  color/CreatingReading
    p5.prototype.alpha
      ✓ no friendly-err-msg I
      ✓ no friendly-err-msg II
      ✓ wrong param type at #0
    p5.prototype.red, green, blue
      ✓ red(): no friendly-err-msg
      ✓ green(): no friendly-err-msg
      ✓ blue(): no friendly-err-msg
    p5.prototype.hue, brightness, lightness, saturation
      ✓ hue(): no friendly-err-msg
      ✓ brightness(): no friendly-err-msg
      ✓ lightness(): no friendly-err-msg
      ✓ saturation(): no friendly-err-msg
    p5.prototype.lerpColor
      ✓ should correctly get lerp colors in RGB
      ✓ should correctly get lerp colors in HSL
      ✓ should correctly get lerp colors in HSB
      ✓ should not extrapolate
> p5.js says: lerpColor() was expecting Number for parameter #2 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/lerpColor]
      ✓ missing param #2
    p5.prototype.lerpColor with alpha
      ✓ should correctly get lerp colors in RGB with alpha
      ✓ should correctly get lerp colors in HSL with alpha
      ✓ should correctly get lerp colors in HSB with alpha
      ✓ should not extrapolate

  p5.Color
    p5.prototype.color(r,g,b)
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
      ✓ shouldn't set HSBA property before hsb access func is called
      ✓ shouldn't set HSLA property before hsb access func is called
> p5.js says: color() was expecting Number for parameter #0 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/color]
      ✓ color(): missing param #0 + throws error
    p5.prototype.color("#rgb")
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
      ✓ invalid hex values resolve to white
      ✓ should not be able to pass css & alpha
      spot check
        ✓ numeric hex values
        ✓ alphabetic hex values
        ✓ alphanumeric hex values
    p5.prototype.color("#rgba")
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
      ✓ invalid hex values resolve to white
      spot check
        ✓ numeric hex values
        ✓ alphabetic hex values
        ✓ alphanumeric hex values
    p5.prototype.color("#rrggbb")
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
      ✓ invalid hex values resolve to white
      spot check
        ✓ numeric hex values
        ✓ alphabetic hex values
        ✓ alphanumeric hex values
    p5.prototype.color("#rrggbbaa")
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
      ✓ invalid hex values resolve to white
      spot check
        ✓ numeric hex values
        ✓ alphabetic hex values
        ✓ alphanumeric hex values
    p5.prototype.color("rgb(r,g,b)")
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
      ✓ spot check variant spacing
      ✓ invalid RGB values resolve to white
    p5.prototype.color("rgb(r%,g%,b%)")
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
      ✓ spot check variant spacing
      ✓ spot check decimal percentage values
      ✓ invalid percentage values default to white
    p5.prototype.color("rgba(r,g,b,a)")
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
      ✓ spot check variant spacing
      ✓ invalid RGBA values resolve to white
    p5.prototype.color("rgba(r%,g%,b%,a)")
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
      ✓ spot check variant spacing
      ✓ spot check decimal percentage values
      ✓ invalid RGBA percentage values resolve to white
    p5.prototype.color("hsl(h, s%, l%)")
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
    p5.prototype.color("hsla(h, s%, l%, a)")
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
    p5.prototype.color("hsb(h, s%, b%)")
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
    p5.prototype.color("hsba(h, s%, b%, a)")
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
    p5.prototype.color("svgnamedcolor")
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
      ✓ spot check color keywords
    p5.prototype.color([])
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
    p5.prototype.color(r,g,b,a)
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
      ✓ should correctly get hue/saturation/brightness/lightness
      ✓ should correctly get RGBA values
      ✓ should correctly render color string
    in default mode
      ✓ can be modified with alpha setter
      ✓ can be modified with rgb setters
    p5.Color in RGB mode with custom range
      ✓ should correctly convert to RGBA
      ✓ should correctly get RGBA property
      ✓ should correctly render color string
      ✓ should correctly get RGBA property after overwrite
    p5.Color in HSL mode
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
      ✓ can be modified with alpha setter
      ✓ can be modified with rgb setters
    p5.Color in HSL mode with Alpha
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
      ✓ should correctly get hue/saturation/lightness/alpha
    p5.Color in HSL mode with custom range
      ✓ should correctly get HSLA property
      ✓ should correctly convert to RGBA
      ✓ should correctly render color string
      ✓ can be modified with alpha setter
      ✓ can be modified with rgb setters
    p5.Color in HSL mode with RGB string
      ✓ should correctly get HSLA property
      ✓ should correctly convert to RGBA
      ✓ should correctly render color string
    p5.Color in HSL mode with HSL string
      ✓ should correctly get HSLA property
      ✓ should correctly convert to RGBA
      ✓ should correctly render color string
    p5.Color in HSL mode with HSB string
      ✓ should correctly get HSLA property
      ✓ should correctly convert to RGBA
      ✓ should correctly render color string
    p5.Color in HSB mode
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
      ✓ can be modified with alpha setter
      ✓ can be modified with rgb setters
    p5.Color in HSB mode with Alpha
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
      ✓ should correctly get hue/saturation/brightness/alpha
    p5.Color in HSB mode with custom range
      ✓ should correctly get HSBA property
      ✓ should correctly convert to RGBA
      ✓ should correctly render color string
    p5.Color in HSB mode with RGB string
      ✓ should correctly get HSBA property
      ✓ should correctly convert to RGBA
      ✓ should correctly render color string
    p5.Color in HSB mode with HSB string
      ✓ should correctly get HSBA property
      ✓ should correctly convert to RGBA
      ✓ should correctly render color string
    p5.Color in HSB mode with HSL string
      ✓ should correctly get HSBA property
      ✓ should correctly convert to RGBA
      ✓ should correctly render color string
    p5.Color in RGB mode with grayscale value
      ✓ should create instance of p5.Color
      ✓ should correctly set RGB levels
    p5.Color in RGB mode with grayscale value and alpha
      ✓ should create instance of p5.Color
      ✓ should correctly set RGB levels
    p5.Color in HSB mode with grayscale value
      ✓ should create instance of p5.Color
      ✓ should correctly set RGB levels
    p5.Color in HSB mode with grayscale value and alpha
      ✓ should create instance of p5.Color
      ✓ should correctly set RGB levels
    p5.Color in HSL mode with grayscale value
      ✓ should create instance of p5.Color
      ✓ should correctly set RGB levels
    p5.Color in HSL mode with grayscale value and alpha
      ✓ should create instance of p5.Color
      ✓ should correctly set RGB levels
    p5.Color.prototype.toString
      ✓ should generate (r,g,b,a) color string with 0-1 normalized alpha
      ✓ should consistently generate the same output
      ✓ should not mutate color levels

  color/Setting
    p5.prototype.colorMode
      ✓ should be a function
      ✓ should set mode to RGB
      ✓ should correctly set color RGB maxes
      ✓ should set mode to HSL
      ✓ should correctly set color HSL maxes
      ✓ should set mode to HSB
      ✓ should correctly set color HSB maxes

  2D Primitives
    p5.prototype.arc
      ✓ should be a function
      ✓ no friendly-err-msg
> p5.js says: arc() was expecting Number for parameter #4 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/arc]
> p5.js says: arc() was expecting Number for parameter #5 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/arc]
      ✓ missing param #4, #5
> p5.js says: arc() was expecting Number for parameter #0 (zero-based index), received string instead. [http://p5js.org/reference/#p5/arc]
      ✓ wrong param type at #0
    p5.prototype.ellipse
      ✓ should be a function
      ✓ no friendly-err-msg
> p5.js says: ellipse() was expecting Number for parameter #2 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/ellipse]
      ✓ missing param #2
> p5.js says: ellipse() was expecting Number for parameter #2 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/ellipse]
      ✓ missing param #2
> p5.js says: ellipse() was expecting Number for parameter #0 (zero-based index), received string instead. [http://p5js.org/reference/#p5/ellipse]
      ✓ wrong param type at #0
    p5.prototype.line
      ✓ should be a function
      ✓ no friendly-err-msg, 2D
      ✓ no friendly-err-msg, 3D
> p5.js says: line() was expecting Number for parameter #3 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/line]
      ✓ missing param #3
      ✓ missing param #4 
> p5.js says: line() was expecting Number for parameter #1 (zero-based index), received string instead. [http://p5js.org/reference/#p5/line]
      ✓ wrong param type at #1
    p5.prototype.point
      ✓ should be a function
      ✓ no friendly-err-msg, 2D
      ✓ no friendly-err-msg, 3D
> p5.js says: point() was expecting Number for parameter #1 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/point]
      ✓ missing param #1
> p5.js says: point() was expecting Number for parameter #1 (zero-based index), received string instead. [http://p5js.org/reference/#p5/point]
      ✓ wrong param type at #1
    p5.prototype.quad
      ✓ should be a function
      ✓ no friendly-err-msg, 2D
> p5.js says: quad() was expecting Number for parameter #7 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/quad]
      ✓ missing param #7
> p5.js says: quad() was expecting Number for parameter #1 (zero-based index), received string instead. [http://p5js.org/reference/#p5/quad]
      ✓ wrong param type at #1
    p5.prototype.rect
      ✓ should be a function
      ✓ no friendly-err-msg, format I
      ✓ no friendly-err-msg, format II
> p5.js says: rect() was expecting Number for parameter #3 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/rect]
      ✓ missing param #3
      ✓ missing param #4
> p5.js says: rect() was expecting Number for parameter #1 (zero-based index), received string instead. [http://p5js.org/reference/#p5/rect]
      ✓ wrong param type at #1
    p5.prototype.triangle
      ✓ should be a function
      ✓ no friendly-err-msg
> p5.js says: triangle() was expecting Number for parameter #5 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/triangle]
      ✓ missing param #5
> p5.js says: triangle() was expecting Number for parameter #1 (zero-based index), received string instead. [http://p5js.org/reference/#p5/triangle]
      ✓ wrong param type at #1

  Core
    new p5(sketch, null, true)
      ✓ should define drawContext synchronously
    new p5(sketch, null, false)
      ✓ should define drawContext asynchronously
    new p5(sketch, node, true)
      ✓ should define drawContext synchronously
    new p5(sketch, node)
      ✓ should define drawContext asynchronously
    new p5(sketch, true)
      ✓ should define drawContext synchronously
    new p5(sketch)
      ✓ should define drawContext asynchronously
    p5.prototype.registerMethod
      ✓ should register and call "init" methods
    new p5() / global mode
      ✓ is triggered when "setup" is in window
      ✓ is triggered when "draw" is in window
      ✓ works when p5.js is loaded asynchronously
      ✓ works on-demand
    p5.prototype._createFriendlyGlobalFunctionBinder
      ✓ should warn when globals already exist
      ✓ should warn when globals are overwritten
      ✓ should allow overwritten globals to be overwritten
      ✓ should allow globals to be deleted
      ✓ should create enumerable globals
      ✓ should not warn about overwriting print()
      ✓ should not warn about overwriting preload methods
      ✓ should not warn about overwriting non-functions

  Curves
    p5.prototype.bezier
      ✓ should be a function
      ✓ no friendly-err-msg
> p5.js says: bezier() was expecting Number for parameter #6 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/bezier]
> p5.js says: bezier() was expecting Number for parameter #7 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/bezier]
> p5.js says: bezierVertex() was expecting Number for parameter #4 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/bezierVertex]
> p5.js says: bezierVertex() was expecting Number for parameter #5 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/bezierVertex]
      ✓ no friendly-err-msg. missing param #6, #7
> p5.js says: bezier() was expecting Number for parameter #0 (zero-based index), received string instead. [http://p5js.org/reference/#p5/bezier]
      ✓ wrong param type at #0
    p5.prototype.bezierPoint
      ✓ should be a function
> p5.js says: bezierPoint() was expecting Number for parameter #0 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/bezierPoint]
> p5.js says: bezierPoint() was expecting Number for parameter #1 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/bezierPoint]
> p5.js says: bezierPoint() was expecting Number for parameter #2 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/bezierPoint]
> p5.js says: bezierPoint() was expecting Number for parameter #3 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/bezierPoint]
> p5.js says: bezierPoint() was expecting Number for parameter #4 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/bezierPoint]
      ✓ should return a number: missing param #0~4
      ✓ should return the correct point on a Bezier Curve
    p5.prototype.bezierTangent
      ✓ should be a function
> p5.js says: bezierTangent() was expecting Number for parameter #0 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/bezierTangent]
> p5.js says: bezierTangent() was expecting Number for parameter #1 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/bezierTangent]
> p5.js says: bezierTangent() was expecting Number for parameter #2 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/bezierTangent]
> p5.js says: bezierTangent() was expecting Number for parameter #3 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/bezierTangent]
> p5.js says: bezierTangent() was expecting Number for parameter #4 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/bezierTangent]
      ✓ should return a number: missing param #0~4
      ✓ should return the correct point on a Bezier Curve
    p5.prototype.curve
      ✓ should be a function
      ✓ no friendly-err-msg
> p5.js says: curve() was expecting Number for parameter #6 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/curve]
> p5.js says: curve() was expecting Number for parameter #7 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/curve]
> p5.js says: curveVertex() was expecting Number for parameter #0 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/curveVertex]
> p5.js says: curveVertex() was expecting Number for parameter #1 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/curveVertex]
      ✓ no friendly-err-msg. missing param #6, #7
> p5.js says: curve() was expecting Number for parameter #0 (zero-based index), received string instead. [http://p5js.org/reference/#p5/curve]
> p5.js says: curveVertex() was expecting Number for parameter #0 (zero-based index), received string instead. [http://p5js.org/reference/#p5/curveVertex]
      ✓ wrong param type at #0
    p5.prototype.curvePoint
      ✓ should be a function
> p5.js says: curvePoint() was expecting Number for parameter #0 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/curvePoint]
> p5.js says: curvePoint() was expecting Number for parameter #1 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/curvePoint]
> p5.js says: curvePoint() was expecting Number for parameter #2 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/curvePoint]
> p5.js says: curvePoint() was expecting Number for parameter #3 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/curvePoint]
> p5.js says: curvePoint() was expecting Number for parameter #4 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/curvePoint]
      ✓ should return a number: missing param #0~4
      ✓ should return the correct point on a Catmull-Rom Curve
    p5.prototype.curveTangent
      ✓ should be a function
> p5.js says: curveTangent() was expecting Number for parameter #0 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/curveTangent]
> p5.js says: curveTangent() was expecting Number for parameter #1 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/curveTangent]
> p5.js says: curveTangent() was expecting Number for parameter #2 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/curveTangent]
> p5.js says: curveTangent() was expecting Number for parameter #3 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/curveTangent]
> p5.js says: curveTangent() was expecting Number for parameter #4 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/curveTangent]
      ✓ should return a number: missing param #0~4
      ✓ should return the correct point on a Catmull-Rom Curve

  p5.Element
    with no events
      ✓ attaches and gets events
      ✓ attaches mutiple handlers and only latest gets events
      ✓ detaches and doesnt get events

  Error Helpers
    validateParameters: Numbers + optional Constant
      ✓ arc(): no friendly-err-msg
> p5.js says: arc() was expecting Number for parameter #4 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/arc]
> p5.js says: arc() was expecting Number for parameter #5 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/arc]
      ✓ arc(): missing param #4, #5
> p5.js says: arc() was expecting Number for parameter #0 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/arc]
      ✓ arc(): missing param #0
> p5.js says: arc() was expecting Number for parameter #4 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/arc]
      ✓ arc(): missing param #4
> p5.js says: arc() was expecting Number for parameter #5 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/arc]
      ✓ arc(): missing param #5
      ✓ arc(): missing param #6, no friendly-err-msg
> p5.js says: arc() was expecting Number for parameter #0 (zero-based index), received string instead. [http://p5js.org/reference/#p5/arc]
      ✓ arc(): wrong param type at #0
    validateParameters: Numbers + optional Constant
      ✓ rect(): no friendly-err-msg
> p5.js says: rect() was expecting Number for parameter #3 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html]. [http://p5js.org/reference/#p5/rect]
      ✓ rect(): missing param #3
> p5.js says: rect() was expecting Number for parameter #0 (zero-based index), received string instead. [http://p5js.org/reference/#p5/rect]
      ✓ rect(): wrong param type at #0
    validateParameters: class, multi-types + optional Numbers
      ✓ ambientLight(): no friendly-err-msg
    validateParameters: multi-format
      ✓ color(): no friendly-err-msg
      ✓ color(): no friendly-err-msg
      ✓ color(): no friendly-err-msg
      ✓ color(): optional parameter, incorrect type
      ✓ color(): extra parameter
> p5.js says: color() was expecting Number for parameter #0 (zero-based index), received array instead. [http://p5js.org/reference/#p5/color]
      ✓ color(): incorrect element type
> p5.js says: color() was expecting 4 arguments, but received 8. [http://p5js.org/reference/#p5/color]
      ✓ color(): incorrect parameter count
    helpForMisusedAtTopLevelCode
      ✓ help for constants is shown
      ✓ help for functions is shown
      ✓ help for variables is shown

  Graphics
    p5.prototype.createGraphics
      ✓ it creates a graphics
    p5.Graphics
      ✓ it has necessary properties
      ✓ it has consistent sizes
      ✓ its canvas has consistent sizes
      ✓ it has a valid pixels array
    p5.Graphics.pixelDensity
      ✓ it can change density
      ✓ it keeps valid sizes after change
      ✓ its canvas keeps valid sizes after change
      ✓ it keeps a valid pixel array after change
    p5.Graphics.resizeCanvas
      ✓ it can call resizeCanvas
      ✓ it resizes properly with pixelDensity 1
      ✓ its canvas resizes properly with pixelDensity 1
      ✓ it resizes properly the pixels array with density 1
      ✓ it resizes properly with pixelDensity 2
      ✓ its canvas resizes properly with pixelDensity 2
      ✓ it resizes properly the pixels array with density 2

  Renderer
    p5.prototype.createCanvas
      ✓ should have correct initial colors
    p5.prototype.resizeCanvas
      ✓ should resize canvas
      ✓ should restore fill color
      ✓ should restore stroke color
      ✓ should restore stroke weight
      ✓ should restore stroke cap
    p5.prototype.blendMode
      ✓ should be a function
      ✓ should be able to ADD
      ✓ should be able to MULTIPLY
    webgl assertions
      ✓ rotateX() should throw a WEBGL assertion Error
      ✓ rotateY() should throw a WEBGL assertion Error
      ✓ rotateZ() should throw a WEBGL assertion Error
      ✓ camera() should throw a WEBGL assertion Error
      ✓ perspective() should throw a WEBGL assertion Error
      ✓ ortho() should throw a WEBGL assertion Error
      ✓ orbitControl() should throw a WEBGL assertion Error
      ✓ ambientLight() should throw a WEBGL assertion Error
      ✓ directionalLight() should throw a WEBGL assertion Error
      ✓ pointLight() should throw a WEBGL assertion Error
      ✓ model() should throw a WEBGL assertion Error
      ✓ createShader() should throw a WEBGL assertion Error
      ✓ shader() should throw a WEBGL assertion Error
      ✓ normalMaterial() should throw a WEBGL assertion Error
      ✓ texture() should throw a WEBGL assertion Error
      ✓ ambientMaterial() should throw a WEBGL assertion Error
      ✓ specularMaterial() should throw a WEBGL assertion Error
      ✓ setAttributes() should throw a WEBGL assertion Error
      ✓ plane() should throw a WEBGL assertion Error
      ✓ box() should throw a WEBGL assertion Error
      ✓ sphere() should throw a WEBGL assertion Error
      ✓ cylinder() should throw a WEBGL assertion Error
      ✓ cone() should throw a WEBGL assertion Error
      ✓ ellipsoid() should throw a WEBGL assertion Error
      ✓ torus() should throw a WEBGL assertion Error

  Structure
    p5.frameCount
      ✓ starts at zero
      ✓ matches draw calls
    p5.prototype.loop and p5.prototype.noLoop
      ✓ noLoop should stop
      ✓ loop should restart
    p5.prototype.push and p5.prototype.pop
      ✓ leak no state after fill()
      ✓ leak no state after noFill()
      ✓ leak no state after stroke()
      ✓ leak no state after noStroke()
      ✓ leak no state after tint()
      ✓ leak no state after noTint()
      ✓ leak no state after strokeWeight()
      ✓ leak no state after strokeCap()
      ✓ leak no state after strokeJoin()
      ✓ leak no state after imageMode()
      ✓ leak no state after rectMode()
      ✓ leak no state after ellipseMode()
      ✓ leak no state after colorMode()
      ✓ leak no state after textAlign()
      ✓ leak no state after textFont()
      ✓ leak no state after textStyle()
      ✓ leak no state after textSize()
      ✓ leak no state after textLeading()
    p5.prototype.redraw
      ✓ resets the rendering matrix between frames

  Dictionary Objects
    p5.prototype.stringDict
      ✓ should be created
      ✓ has correct structure
      ✓ should have correct size
      ✓ should add new key-value pairs
      ✓ should add objects
      ✓ should change existing values
      ✓ should clear
    p5.prototype.numberDict
      ✓ should be created
      ✓ has correct structure
      ✓ should have correct size
      ✓ should add new key-value pairs
      ✓ should change existing values
      ✓ should add values together
      ✓ should subtract from value
      ✓ should divide from value
      ✓ should multiply value
      ✓ should find minimum value
      ✓ should find maximum value
      ✓ should clear

  loading images
    ✓ should call successCallback when image loads
    ✓ should call failureCallback when unable to load image
    ✓ should draw image with defaults
    ✓ should draw cropped image
    - Test in preload() with success callback
    - Test in setup() after preload()

  pixels
    p5.Image.get
      ✓ works with integers
      ✓ rounds down when given decimal numbers

  Files
    ✓ preload is a Boolean
    httpDo()
      ✓ should be a function
      ✓ should work when provided with just a path
      ✓ should accept method parameter
      ✓ should accept type parameter
      ✓ should accept method and type parameter together
      ✓ should pass error object to error callback function
      ✓ should return a promise
      ✓ should return a promise that rejects on error
    loadJSON() in Preload
      ✓ should be a function
      ✓ should return an Object
    loadStrings() in Preload
      ✓ should be a function
      ✓ should return an array
    loadXML() in Preload
      ✓ should be a function
      ✓ should return an Object
    p5.prototype.myp5.loadJSON
      ✓ should be a function
      ✓ should call callback function if provided
      ✓ should pass an Array to callback function
      ✓ should call error callback function if provided
      ✓ should pass error object to error callback function
      ✓ should allow json to override jsonp in 3rd param
    p5.prototype.loadStrings
      ✓ should be a function
      ✓ should call callback function if provided
      ✓ should pass an Array to callback function
      1) should include empty strings
      ✓ should call error callback function if provided
      ✓ should pass error object to error callback function
    p5.prototype.loadXML
      ✓ should be a function
    p5.prototype.loadTable
      ✓ should be a function
      ✓ should load a file without options
      ✓ the loaded file should be correct
      ✓ using the csv option works
      ✓ using the csv and tsv options fails
      ✓ using the header option works
      ✓ using the header and csv options together works
      ✓ CSV files should handle commas within quoted fields
      ✓ CSV files should handle escaped quotes and returns within quoted fields
    p5.prototype.loadBytes
      ✓ should be a function
      ✓ should call callback function if provided
      ✓ should call error callback function if not found
      ✓ should pass an Object to callback function
      ✓ data.bytes should be an Array/Uint8Array
      ✓ should load correct data

  Calculation
    p5.prototype.abs
      ✓ should be a function
      ✓ should return a number
      ✓ should return an absolute value
    p5.prototype.ceil
      ✓ should be a function
      ✓ should return ceil value given negative value
      ✓ should return a ceil value given positive value
      ✓ should return same number
    p5.prototype.dist
      ✓ should be a function
      ✓ should return a number
      ✓ should return correct distance
      ✓ should return positive  distance
      ✓ should return correct distance
      ✓ should return positive  distance
      ✓ should not underflow
      ✓ should not overflow
      ✓ should return 0 for identical 2D points
      ✓ should return 0 for identical 3D points
    p5.prototype.exp
      ✓ should be a function
      ✓ should return exp value given negative value
      ✓ should return exp value given positive value
      ✓ should return 1
    p5.prototype.floor
      ✓ should be a function
      ✓ should return floor value given negative value
      ✓ should return a floor value given positive value
      ✓ should return same number
    p5.prototype.lerp
      ✓ should be a function
      ✓ should return start
      ✓ should return average
      ✓ should return stop
    p5.prototype.log
      ✓ should be a function
      ✓ should return log value given negative value
      ✓ should return log value given positive value
      ✓ should return 0
    p5.prototype.mag
      ✓ should be a function
      ✓ should return a number
      ✓ should return correct magitude
      ✓ should return positive magnitude given negative inputs
    p5.prototype.map
      ✓ should be a function
      ✓ should return a number
      ✓ should return scaled value
      ✓ should extrapolate by default
      ✓ shaould clamp correctly
    p5.prototype.max
      ✓ should be a function
      ✓ should return larger left argument
      ✓ should return larger right argument
      ✓ should return single value
      ✓ should return larger value from array
      ✓ should return larger value from array
      ✓ should return single value from array
    p5.prototype.min
      ✓ should be a function
      ✓ should return smaller right  argument
      ✓ should return smaller left  argument
      ✓ should return single value
      ✓ should return smaller value from array
      ✓ should return smaller value from array
      ✓ should return single value from array
    p5.prototype.norm
      ✓ should be a function
      ✓ should return scaled decimal value
    p5.prototype.constrain
      ✓ should be a function
      ✓ should return same number
      ✓ should return lower bound
      ✓ should return upper bound
    p5.prototype.sq
      ✓ should be a function
      ✓ should return sauare value
      ✓ should return squared value given negative number
    p5.prototype.pow
      ✓ should be a function
      ✓ should return pow for negative exponential
      ✓ should return pow for positive exponential
    p5.prototype.round
      ✓ should be a function
      ✓ should round down
      ✓ should round up from midpoint
      ✓ should round up
    p5.prototype.sqrt
      ✓ should be a function
      ✓ should return square root

  Noise
    p5.prototype.noise
      ✓ should return a number
      ✓ should return a number 0 < n < 1
    p5.prototype.noiseSeed
      ✓ should return a number 0 < n < 1
      ✓ should return same sequence of numbers

  p5.Vector
    p5.prototype.createVector()
      ✓ should create instance of p5.Vector
      ✓ should have x, y, z be initialized to 0
    p5.prototype.createVector()
      ✓ should have x, y, z be initialized to 1,2,3
    new p5.Vector()
      ✓ should set constant to DEGREES
      ✓ should have x, y, z be initialized to 0
    new p5.Vector(1, 2, 3)
      ✓ should have x, y, z be initialized to 1,2,3
    new p5.Vector(1,2,undefined)
      ✓ should have x, y, z be initialized to 1,2,0
    p5.prototype.rotate() RADIANS
      ✓ should have x, y, z rotated to 0, -1, 0 (RADIANS)
    p5.prototype.rotate() DEGREES
      ✓ should have x, y, z rotated to 0, -1, 0 (DEGREES)
    p5.prototype.angleBetween()
      ✓ should not trip on rounding issues in 2D space
      ✓ should not trip on rounding issues in 3D space
      ✓ should return NaN for zero vector
    set()
      with p5.Vector
        ✓ should have x, y, z be initialized to the vector's x, y, z
      with Array
        ✓ [2,4] should set x === 2, y === 4, z === 0
        ✓ should have x, y, z be initialized to the array's 0,1,2 index
      set(1,2,3)
        ✓ should have x, y, z be initialized to the 1, 2, 3
    copy()
      ✓ should not return the same instance
      ✓ should return the calling object's x, y, z
    add()
      with p5.Vector
        ✓ should add x, y, z  from the vector argument
      with Array
        ✓ should add the array's 0,1,2 index
        add([2, 4])
          ✓ should add the x and y components
      add(3,5)
        ✓ should add the x and y components
      add(2,3,4)
        ✓ should add the x, y, z components
      p5.Vector.add(v1, v2)
        ✓ should return neither v1 nor v2
        ✓ should be sum of the two p5.Vectors
    sub()
      with p5.Vector
        ✓ should sub x, y, z  from the vector argument
      with Array
        ✓ should substract from the array's 0,1,2 index
        sub([2, 4])
          ✓ should sub the x and y components
      sub(3,5)
        ✓ should substract the x and y components
      sub(2,3,4)
        ✓ should substract the x, y, z components
      p5.Vector.sub(v1, v2)
        ✓ should return neither v1 nor v2
        ✓ should be v1 - v2
    mult()
      ✓ should return the same object
p5.Vector.prototype.mult: n is undefined or not a finite number
      ✓ should not change x, y, z if no argument is given
p5.Vector.prototype.mult: n is undefined or not a finite number
      ✓ should not change x, y, z if n is not a finite number
      with scalar
        ✓ multiply the x, y, z with the scalar
      p5.Vector.mult(v, n)
        ✓ should return a new p5.Vector
        ✓ should multiply the scalar
    div()
      ✓ should return the same object
p5.Vector.prototype.div: n is undefined or not a finite number
      ✓ should not change x, y, z if no argument is given
p5.Vector.prototype.div: n is undefined or not a finite number
      ✓ should not change x, y, z if n is not a finite number
      with scalar
        ✓ divide the x, y, z with the scalar
p5.Vector.prototype.div: divide by 0
        ✓ should not change x, y, z if n is 0
      p5.Vector.div(v, n)
        ✓ should not be undefined
        ✓ should return a new p5.Vector
        ✓ should divide the scalar
    dot
      ✓ should return a number
      with p5.Vector
        ✓ should be the dot product of the vector
      with x, y, z
        ✓ should be the dot product with x, y
        ✓ should be the dot product with x, y, z
      p5.Vector.dot(v, n)
        ✓ should return a number
        ✓ should be the dot product of the two vectors
    cross
      ✓ should return a new product
      with p5.Vector
        ✓ should cross x, y, z  from the vector argument
      p5.Vector.cross(v1, v2)
        ✓ should not be undefined
        ✓ should return neither v1 nor v2
        ✓ should the cross product of v1 and v2
    dist
      ✓ should return a number
      ✓ should return distance between two vectors
      ✓ should return distance between two vectors
      ✓ should be commutative
    p5.Vector.dist(v1, v2)
      ✓ should return a number
      ✓ should be commutative
    normalize
      ✓ should return the same object
      with unit vector
        ✓ should not change the vector
      with 2,2,1
        ✓ should normalize to 0.66,0.66,0.33
    limit
      ✓ should return the same object
      with a vector larger than the limit
        ✓ should limit the vector
      with a vector smaller than the limit
        ✓ should not limit the vector
    setMag
      ✓ should return the same object
      ✓ should set the magnitude of the vector
      ✓ should set the magnitude of the vector
    heading
      ✓ should return a number
      ✓ heading for vector pointing right is 0
      ✓ heading for vector pointing down is PI/2
      ✓ heading for vector pointing left is PI
    rotate
      ✓ should return the same object
      ✓ should rotate the vector
      ✓ should rotate the vector
    lerp
      ✓ should return the same object
      with x, y, z, amt
        ✓ should lerp x by amt
        ✓ should lerp y by amt
        ✓ should lerp z by amt
      with no amt
        ✓ should assume 0 amt
    p5.Vector.lerp(v1, v2, amt)
      ✓ should not be undefined
      ✓ should be a p5.Vector
      ✓ should return neither v1 nor v2
      ✓ should res to be [1, 1, 1]
    p5.Vector.fromAngle(angle)
      ✓ should be a p5.Vector with values (0,1)
    p5.Vector.random2D()
      ✓ should be a unit p5.Vector
    p5.Vector.random3D()
      ✓ should be a unit p5.Vector
    v1.angleBetween(v2)
      ✓ should be a Number
      with [1,0,0] and [2,2,0]
        ✓ should be 45 deg difference
      with [2,0,0] and [-2,0,0]
        ✓ should be 180 deg difference
      with [2,0,0] and [-2,-2,0]
        ✓ should be 135 deg difference
        ✓ should be commutative
    array
      ✓ should return an array
      ✓ should return an with the x y and z components

  Random
    p5.prototype.random
      random()
        ✓ should return a number
        ✓ should return a number 0 <= n < 1
        ✓ should return same sequence of numbers
      random(5)
        ✓ should return a number 0 <= n < 5
      random(1, 10)
        ✓ should return a number 1 <= n < 10
      random(["apple", "pear", "orange", "grape"])
        ✓ should return a fruit

  Trigonometry
    p5.prototype.angleMode
      ✓ should set constant to DEGREES
      ✓ should set constant to RADIANS
      ✓ should always be RADIANS or DEGREES
    p5.prototype.degrees
      ✓ should return the angle in radians when angleMode is DEGREES
      ✓ should return the angle in radians when angleMode is RADIANS
    p5.prototype.radians
      ✓ should return the angle in degrees when angleMode is RADIANS
      ✓ should return the angle in degrees when angleMode is DEGREES
    p5.prototype.asin
      ✓ should handle degrees
      ✓ should handle radians
    p5.prototype.atan
      ✓ should handle degrees
      ✓ should handle radians
    p5.prototype.acos
      ✓ should handle degrees
      ✓ should handle radians
    p5.prototype.sin
      ✓ should handle degrees
      ✓ should handle radians
    p5.prototype.cos
      ✓ should handle degrees
      ✓ should handle radians
    p5.prototype.tan
      ✓ should handle degrees
      ✓ should handle radians
    p5.prototype.atan2
      ✓ should handle degrees
      ✓ should handle radians

  Font Loading
    Test in preload() with success callback
      ✓ Load asynchronously and use success callback
    setup() after preload() with success callback
      ✓ Resource should be loaded if preload() finished
    Fonts outside preload()
      ✓ loadFont should be a function
      loadFont() with callback
        ✓ should call success-cb w/ obj when font loads
        ✓ should call error-callback when font load fails

  Array
    p5.prototype.append
      ✓ should be a function
      ✓ should return an array with appended value
    p5.prototype.arrayCopy
      ✓ should be a function
      src, dst
        ✓ should return fully copied array
      src, dst, len
        ✓ should return an array with first 2 elements copied over
        ✓ should return an array with first 4 elements copied over
      src, srcPosition, dst, dstPosition, length
        ✓ should copy src[1 - 2] to dst[0 - 1]
        ✓ should copy src[1 - 2] to dst [1 - 2]
        ✓ should copy src[3 - 4] to dst[0 - 1]
    p5.prototype.concat
      ✓ should concat empty arrays
      ✓ should concat arrays
    p5.prototype.reverse
      ✓ should reverse empty array
      ✓ should reverse array
    p5.prototype.shorten
      ✓ should not have error for shortening empty array
      ✓ should shorten array
    p5.prototype.sort
      ✓ should not have error for sorting empty array
      ✓ should sort alphabetic array lexicographically
      ✓ should sort numerical array from smallest to largest
      ✓ should sort numerical array from smallest to largest for only first 2 elements
    p5.prototype.splice
      ✓ should insert 4 into position 1
      ✓ should splice in array of values
    p5.prototype.subset
      ✓ should get subset from index 1 to end
      ✓ should subset arr[1 - 2]

  String functions
    p5.prototype.join
      ✓ should be a function
      ✓ should return joined string
    p5.prototype.match
      ✓ should be a function
      ✓ should return correct index of match strings
    p5.prototype.matchAll
      ✓ should be a function
      ✓ should return correct array of strings
    p5.prototype.nf
      ✓ should be a function
      ✓ should return correct string
      ✓ should return correct string
    p5.prototype.nfc
      ✓ should be a function
      ✓ should return correct string
      ✓ should return correct string
    p5.prototype.nfp
      ✓ should be a function
      ✓ should return correct string
      ✓ should return correct string
    p5.prototype.nfs
      ✓ should be a function
      ✓ should return correct string
      ✓ should return correct string
    p5.prototype.split
      ✓ should be a function
      ✓ should return correct index of match strings
    p5.prototype.splitTokens
      ✓ should be a function
      ✓ should return correct index of match strings
    p5.prototype.trim
      ✓ should be a function
      ✓ should return correct strings

  time and date
    p5.prototype.year
      ✓ should be a function
      ✓ should return this year
    p5.prototype.day
      ✓ should be a function
      ✓ should return todays day
    p5.prototype.month
      ✓ should be a function
      ✓ should return today's month
    p5.prototype.hour
      ✓ should be a function
      ✓ should return this hour
    p5.prototype.second
      ✓ should be a function
      ✓ should return this second
    p5.prototype.minute
      ✓ should be a function
      ✓ should return a number that is this minute
    p5.prototype.millis
      ✓ should be a function
      ✓ result should be a number
      ✓ result should be greater than running time
      ✓ result should be > newResult

  setup() after preload() without success callback
    ✓ Resource should be loaded if preload() finished

  Test in preload() with success callback
    ✓ Load asynchronously and use success callback

  setup() after preload() with success callback
    ✓ should be loaded if preload() finished

  setup() after preload() without success callback
    ✓ should be loaded now preload() finished


  681 passing (4s)
  2 pending
  1 failing

  1) Files
       p5.prototype.loadStrings
         should include empty strings:
     length of data is 6: expected [ Array(5) ] to have a length of 6 but got 5
  



Testing: http://localhost:9001/test/test-minified.html


  DOM
    p5.prototype.select
      ✓ should find elements by ID
      ✓ should return null when elements by ID are not found
      ✓ should find elements by class
      ✓ should return null when elements by class are not found
      ✓ should find elements by tag name
      ✓ should return null when elements by tag name are not found
      ✓ should create an empty node when no html is provided

  color/p5.ColorConversion
    rgbaToHSBA
      ✓ rgba converts to hsba
    hsbaToRGBA
      ✓ hsba converts to rgba
      ✓ handles maximum hue value
    hslaToRGBA
      ✓ hsla converts to rgba
      ✓ handles maximum hue value
    rgbaToHSLA
      ✓ rgba converts to hsla (low lightness)
      ✓ rgba converts to hsla (high lightness)
    hslaToHSBA
      ✓ hsla converts to hsba
    hsbaToHSLA
      ✓ hsba converts to hsla

  color/CreatingReading
    p5.prototype.alpha
      ✓ no friendly-err-msg I
      ✓ no friendly-err-msg II
      ✓ wrong param type at #0
    p5.prototype.red, green, blue
      ✓ red(): no friendly-err-msg
      ✓ green(): no friendly-err-msg
      ✓ blue(): no friendly-err-msg
    p5.prototype.hue, brightness, lightness, saturation
      ✓ hue(): no friendly-err-msg
      ✓ brightness(): no friendly-err-msg
      ✓ lightness(): no friendly-err-msg
      ✓ saturation(): no friendly-err-msg
    p5.prototype.lerpColor
      ✓ should correctly get lerp colors in RGB
      ✓ should correctly get lerp colors in HSL
      ✓ should correctly get lerp colors in HSB
      ✓ should not extrapolate
      ✓ missing param #2
    p5.prototype.lerpColor with alpha
      ✓ should correctly get lerp colors in RGB with alpha
      ✓ should correctly get lerp colors in HSL with alpha
      ✓ should correctly get lerp colors in HSB with alpha
      ✓ should not extrapolate

  p5.Color
    p5.prototype.color(r,g,b)
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
      ✓ shouldn't set HSBA property before hsb access func is called
      ✓ shouldn't set HSLA property before hsb access func is called
      ✓ color(): missing param #0 + throws error
    p5.prototype.color("#rgb")
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
      ✓ invalid hex values resolve to white
      ✓ should not be able to pass css & alpha
      spot check
        ✓ numeric hex values
        ✓ alphabetic hex values
        ✓ alphanumeric hex values
    p5.prototype.color("#rgba")
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
      ✓ invalid hex values resolve to white
      spot check
        ✓ numeric hex values
        ✓ alphabetic hex values
        ✓ alphanumeric hex values
    p5.prototype.color("#rrggbb")
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
      ✓ invalid hex values resolve to white
      spot check
        ✓ numeric hex values
        ✓ alphabetic hex values
        ✓ alphanumeric hex values
    p5.prototype.color("#rrggbbaa")
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
      ✓ invalid hex values resolve to white
      spot check
        ✓ numeric hex values
        ✓ alphabetic hex values
        ✓ alphanumeric hex values
    p5.prototype.color("rgb(r,g,b)")
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
      ✓ spot check variant spacing
      ✓ invalid RGB values resolve to white
    p5.prototype.color("rgb(r%,g%,b%)")
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
      ✓ spot check variant spacing
      ✓ spot check decimal percentage values
      ✓ invalid percentage values default to white
    p5.prototype.color("rgba(r,g,b,a)")
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
      ✓ spot check variant spacing
      ✓ invalid RGBA values resolve to white
    p5.prototype.color("rgba(r%,g%,b%,a)")
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
      ✓ spot check variant spacing
      ✓ spot check decimal percentage values
      ✓ invalid RGBA percentage values resolve to white
    p5.prototype.color("hsl(h, s%, l%)")
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
    p5.prototype.color("hsla(h, s%, l%, a)")
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
    p5.prototype.color("hsb(h, s%, b%)")
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
    p5.prototype.color("hsba(h, s%, b%, a)")
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
    p5.prototype.color("svgnamedcolor")
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
      ✓ spot check color keywords
    p5.prototype.color([])
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
    p5.prototype.color(r,g,b,a)
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
      ✓ should correctly get hue/saturation/brightness/lightness
      ✓ should correctly get RGBA values
      ✓ should correctly render color string
    in default mode
      ✓ can be modified with alpha setter
      ✓ can be modified with rgb setters
    p5.Color in RGB mode with custom range
      ✓ should correctly convert to RGBA
      ✓ should correctly get RGBA property
      ✓ should correctly render color string
      ✓ should correctly get RGBA property after overwrite
    p5.Color in HSL mode
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
      ✓ can be modified with alpha setter
      ✓ can be modified with rgb setters
    p5.Color in HSL mode with Alpha
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
      ✓ should correctly get hue/saturation/lightness/alpha
    p5.Color in HSL mode with custom range
      ✓ should correctly get HSLA property
      ✓ should correctly convert to RGBA
      ✓ should correctly render color string
      ✓ can be modified with alpha setter
      ✓ can be modified with rgb setters
    p5.Color in HSL mode with RGB string
      ✓ should correctly get HSLA property
      ✓ should correctly convert to RGBA
      ✓ should correctly render color string
    p5.Color in HSL mode with HSL string
      ✓ should correctly get HSLA property
      ✓ should correctly convert to RGBA
      ✓ should correctly render color string
    p5.Color in HSL mode with HSB string
      ✓ should correctly get HSLA property
      ✓ should correctly convert to RGBA
      ✓ should correctly render color string
    p5.Color in HSB mode
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
      ✓ can be modified with alpha setter
      ✓ can be modified with rgb setters
    p5.Color in HSB mode with Alpha
      ✓ should create instance of p5.Color
      ✓ should correctly set RGBA property
      ✓ should correctly get hue/saturation/brightness/alpha
    p5.Color in HSB mode with custom range
      ✓ should correctly get HSBA property
      ✓ should correctly convert to RGBA
      ✓ should correctly render color string
    p5.Color in HSB mode with RGB string
      ✓ should correctly get HSBA property
      ✓ should correctly convert to RGBA
      ✓ should correctly render color string
    p5.Color in HSB mode with HSB string
      ✓ should correctly get HSBA property
      ✓ should correctly convert to RGBA
      ✓ should correctly render color string
    p5.Color in HSB mode with HSL string
      ✓ should correctly get HSBA property
      ✓ should correctly convert to RGBA
      ✓ should correctly render color string
    p5.Color in RGB mode with grayscale value
      ✓ should create instance of p5.Color
      ✓ should correctly set RGB levels
    p5.Color in RGB mode with grayscale value and alpha
      ✓ should create instance of p5.Color
      ✓ should correctly set RGB levels
    p5.Color in HSB mode with grayscale value
      ✓ should create instance of p5.Color
      ✓ should correctly set RGB levels
    p5.Color in HSB mode with grayscale value and alpha
      ✓ should create instance of p5.Color
      ✓ should correctly set RGB levels
    p5.Color in HSL mode with grayscale value
      ✓ should create instance of p5.Color
      ✓ should correctly set RGB levels
    p5.Color in HSL mode with grayscale value and alpha
      ✓ should create instance of p5.Color
      ✓ should correctly set RGB levels
    p5.Color.prototype.toString
      ✓ should generate (r,g,b,a) color string with 0-1 normalized alpha
      ✓ should consistently generate the same output
      ✓ should not mutate color levels

  color/Setting
    p5.prototype.colorMode
      ✓ should be a function
      ✓ should set mode to RGB
      ✓ should correctly set color RGB maxes
      ✓ should set mode to HSL
      ✓ should correctly set color HSL maxes
      ✓ should set mode to HSB
      ✓ should correctly set color HSB maxes

  2D Primitives
    p5.prototype.arc
      ✓ should be a function
      ✓ no friendly-err-msg
      ✓ missing param #4, #5
      ✓ wrong param type at #0
    p5.prototype.ellipse
      ✓ should be a function
      ✓ no friendly-err-msg
      ✓ missing param #2
      ✓ missing param #2
      ✓ wrong param type at #0
    p5.prototype.line
      ✓ should be a function
      ✓ no friendly-err-msg, 2D
      ✓ no friendly-err-msg, 3D
      ✓ missing param #3
      ✓ missing param #4 
      ✓ wrong param type at #1
    p5.prototype.point
      ✓ should be a function
      ✓ no friendly-err-msg, 2D
      ✓ no friendly-err-msg, 3D
      ✓ missing param #1
      ✓ wrong param type at #1
    p5.prototype.quad
      ✓ should be a function
      ✓ no friendly-err-msg, 2D
      ✓ missing param #7
      ✓ wrong param type at #1
    p5.prototype.rect
      ✓ should be a function
      ✓ no friendly-err-msg, format I
      ✓ no friendly-err-msg, format II
      ✓ missing param #3
      ✓ missing param #4
      ✓ wrong param type at #1
    p5.prototype.triangle
      ✓ should be a function
      ✓ no friendly-err-msg
      ✓ missing param #5
      ✓ wrong param type at #1

  Core
    new p5(sketch, null, true)
      ✓ should define drawContext synchronously
    new p5(sketch, null, false)
      ✓ should define drawContext asynchronously
    new p5(sketch, node, true)
      ✓ should define drawContext synchronously
    new p5(sketch, node)
      ✓ should define drawContext asynchronously
    new p5(sketch, true)
      ✓ should define drawContext synchronously
    new p5(sketch)
      ✓ should define drawContext asynchronously
    p5.prototype.registerMethod
      ✓ should register and call "init" methods
    new p5() / global mode
      ✓ is triggered when "setup" is in window
      ✓ is triggered when "draw" is in window
      ✓ works when p5.js is loaded asynchronously
      ✓ works on-demand
    p5.prototype._createFriendlyGlobalFunctionBinder
      ✓ should NOT warn when globals already exist
      ✓ should NOT warn when globals are overwritten
      ✓ should allow overwritten globals to be overwritten
      ✓ should allow globals to be deleted
      ✓ should create enumerable globals
      ✓ should not warn about overwriting print()
      ✓ should not warn about overwriting preload methods
      ✓ should not warn about overwriting non-functions

  Curves
    p5.prototype.bezier
      ✓ should be a function
      ✓ no friendly-err-msg
      ✓ no friendly-err-msg. missing param #6, #7
      ✓ wrong param type at #0
    p5.prototype.bezierPoint
      ✓ should be a function
      ✓ should return a number: missing param #0~4
      ✓ should return the correct point on a Bezier Curve
    p5.prototype.bezierTangent
      ✓ should be a function
      ✓ should return a number: missing param #0~4
      ✓ should return the correct point on a Bezier Curve
    p5.prototype.curve
      ✓ should be a function
      ✓ no friendly-err-msg
      ✓ no friendly-err-msg. missing param #6, #7
      ✓ wrong param type at #0
    p5.prototype.curvePoint
      ✓ should be a function
      ✓ should return a number: missing param #0~4
      ✓ should return the correct point on a Catmull-Rom Curve
    p5.prototype.curveTangent
      ✓ should be a function
      ✓ should return a number: missing param #0~4
      ✓ should return the correct point on a Catmull-Rom Curve

  p5.Element
    with no events
      ✓ attaches and gets events
      ✓ attaches mutiple handlers and only latest gets events
      ✓ detaches and doesnt get events

  Error Helpers
    validateParameters: Numbers + optional Constant
      ✓ arc(): no friendly-err-msg
      ✓ arc(): missing param #4, #5
      ✓ arc(): missing param #0
      ✓ arc(): missing param #4
      ✓ arc(): missing param #5
      ✓ arc(): missing param #6, no friendly-err-msg
      ✓ arc(): wrong param type at #0
    validateParameters: Numbers + optional Constant
      ✓ rect(): no friendly-err-msg
      ✓ rect(): missing param #3
      ✓ rect(): wrong param type at #0
    validateParameters: class, multi-types + optional Numbers
      ✓ ambientLight(): no friendly-err-msg
    validateParameters: multi-format
      ✓ color(): no friendly-err-msg
      ✓ color(): no friendly-err-msg
      ✓ color(): no friendly-err-msg
      ✓ color(): optional parameter, incorrect type
      ✓ color(): extra parameter
      ✓ color(): incorrect element type
      ✓ color(): incorrect parameter count
    helpForMisusedAtTopLevelCode
      ✓ help for constants is shown
      ✓ help for functions is shown
      ✓ help for variables is shown

  Graphics
    p5.prototype.createGraphics
      ✓ it creates a graphics
    p5.Graphics
      ✓ it has necessary properties
      ✓ it has consistent sizes
      ✓ its canvas has consistent sizes
      ✓ it has a valid pixels array
    p5.Graphics.pixelDensity
      ✓ it can change density
      ✓ it keeps valid sizes after change
      ✓ its canvas keeps valid sizes after change
      ✓ it keeps a valid pixel array after change
    p5.Graphics.resizeCanvas
      ✓ it can call resizeCanvas
      ✓ it resizes properly with pixelDensity 1
      ✓ its canvas resizes properly with pixelDensity 1
      ✓ it resizes properly the pixels array with density 1
      ✓ it resizes properly with pixelDensity 2
      ✓ its canvas resizes properly with pixelDensity 2
      ✓ it resizes properly the pixels array with density 2

  Renderer
    p5.prototype.createCanvas
      ✓ should have correct initial colors
    p5.prototype.resizeCanvas
      ✓ should resize canvas
      ✓ should restore fill color
      ✓ should restore stroke color
      ✓ should restore stroke weight
      ✓ should restore stroke cap
    p5.prototype.blendMode
      ✓ should be a function
      ✓ should be able to ADD
      ✓ should be able to MULTIPLY
    webgl assertions
      ✓ rotateX() should throw a WEBGL assertion Error
      ✓ rotateY() should throw a WEBGL assertion Error
      ✓ rotateZ() should throw a WEBGL assertion Error
      ✓ camera() should throw a WEBGL assertion Error
      ✓ perspective() should throw a WEBGL assertion Error
      ✓ ortho() should throw a WEBGL assertion Error
      ✓ orbitControl() should throw a WEBGL assertion Error
      ✓ ambientLight() should throw a WEBGL assertion Error
      ✓ directionalLight() should throw a WEBGL assertion Error
      ✓ pointLight() should throw a WEBGL assertion Error
      ✓ model() should throw a WEBGL assertion Error
      ✓ createShader() should throw a WEBGL assertion Error
      ✓ shader() should throw a WEBGL assertion Error
      ✓ normalMaterial() should throw a WEBGL assertion Error
      ✓ texture() should throw a WEBGL assertion Error
      ✓ ambientMaterial() should throw a WEBGL assertion Error
      ✓ specularMaterial() should throw a WEBGL assertion Error
      ✓ setAttributes() should throw a WEBGL assertion Error
      ✓ plane() should throw a WEBGL assertion Error
      ✓ box() should throw a WEBGL assertion Error
      ✓ sphere() should throw a WEBGL assertion Error
      ✓ cylinder() should throw a WEBGL assertion Error
      ✓ cone() should throw a WEBGL assertion Error
      ✓ ellipsoid() should throw a WEBGL assertion Error
      ✓ torus() should throw a WEBGL assertion Error

  Structure
    p5.frameCount
      ✓ starts at zero
      ✓ matches draw calls
    p5.prototype.loop and p5.prototype.noLoop
      ✓ noLoop should stop
      ✓ loop should restart
    p5.prototype.push and p5.prototype.pop
      ✓ leak no state after fill()
      ✓ leak no state after noFill()
      ✓ leak no state after stroke()
      ✓ leak no state after noStroke()
      ✓ leak no state after tint()
      ✓ leak no state after noTint()
      ✓ leak no state after strokeWeight()
      ✓ leak no state after strokeCap()
      ✓ leak no state after strokeJoin()
      ✓ leak no state after imageMode()
      ✓ leak no state after rectMode()
      ✓ leak no state after ellipseMode()
      ✓ leak no state after colorMode()
      ✓ leak no state after textAlign()
      ✓ leak no state after textFont()
      ✓ leak no state after textStyle()
      ✓ leak no state after textSize()
      ✓ leak no state after textLeading()
    p5.prototype.redraw
      ✓ resets the rendering matrix between frames

  Dictionary Objects
    p5.prototype.stringDict
      ✓ should be created
      ✓ has correct structure
      ✓ should have correct size
      ✓ should add new key-value pairs
      ✓ should add objects
      ✓ should change existing values
      ✓ should clear
    p5.prototype.numberDict
      ✓ should be created
      ✓ has correct structure
      ✓ should have correct size
      ✓ should add new key-value pairs
      ✓ should change existing values
      ✓ should add values together
      ✓ should subtract from value
      ✓ should divide from value
      ✓ should multiply value
      ✓ should find minimum value
      ✓ should find maximum value
      ✓ should clear

  loading images
    ✓ should call successCallback when image loads
    ✓ should call failureCallback when unable to load image
    ✓ should draw image with defaults
    ✓ should draw cropped image
    - Test in preload() with success callback
    - Test in setup() after preload()

  pixels
    p5.Image.get
      ✓ works with integers
      ✓ rounds down when given decimal numbers

  Files
    ✓ preload is a Boolean
    httpDo()
      ✓ should be a function
      ✓ should work when provided with just a path
      ✓ should accept method parameter
      ✓ should accept type parameter
      ✓ should accept method and type parameter together
      ✓ should pass error object to error callback function
      ✓ should return a promise
      ✓ should return a promise that rejects on error
    loadJSON() in Preload
      ✓ should be a function
      ✓ should return an Object
    loadStrings() in Preload
      ✓ should be a function
      ✓ should return an array
    loadXML() in Preload
      ✓ should be a function
      ✓ should return an Object
    p5.prototype.myp5.loadJSON
      ✓ should be a function
      ✓ should call callback function if provided
      ✓ should pass an Array to callback function
      ✓ should call error callback function if provided
      ✓ should pass error object to error callback function
      ✓ should allow json to override jsonp in 3rd param
    p5.prototype.loadStrings
      ✓ should be a function
      ✓ should call callback function if provided
      ✓ should pass an Array to callback function
      1) should include empty strings
      ✓ should call error callback function if provided
      ✓ should pass error object to error callback function
    p5.prototype.loadXML
      ✓ should be a function
    p5.prototype.loadTable
      ✓ should be a function
      ✓ should load a file without options
      ✓ the loaded file should be correct
      ✓ using the csv option works
      ✓ using the csv and tsv options fails
      ✓ using the header option works
      ✓ using the header and csv options together works
      ✓ CSV files should handle commas within quoted fields
      ✓ CSV files should handle escaped quotes and returns within quoted fields
    p5.prototype.loadBytes
      ✓ should be a function
      ✓ should call callback function if provided
      ✓ should call error callback function if not found
      ✓ should pass an Object to callback function
      ✓ data.bytes should be an Array/Uint8Array
      ✓ should load correct data

  Calculation
    p5.prototype.abs
      ✓ should be a function
      ✓ should return a number
      ✓ should return an absolute value
    p5.prototype.ceil
      ✓ should be a function
      ✓ should return ceil value given negative value
      ✓ should return a ceil value given positive value
      ✓ should return same number
    p5.prototype.dist
      ✓ should be a function
      ✓ should return a number
      ✓ should return correct distance
      ✓ should return positive  distance
      ✓ should return correct distance
      ✓ should return positive  distance
      ✓ should not underflow
      ✓ should not overflow
      ✓ should return 0 for identical 2D points
      ✓ should return 0 for identical 3D points
    p5.prototype.exp
      ✓ should be a function
      ✓ should return exp value given negative value
      ✓ should return exp value given positive value
      ✓ should return 1
    p5.prototype.floor
      ✓ should be a function
      ✓ should return floor value given negative value
      ✓ should return a floor value given positive value
      ✓ should return same number
    p5.prototype.lerp
      ✓ should be a function
      ✓ should return start
      ✓ should return average
      ✓ should return stop
    p5.prototype.log
      ✓ should be a function
      ✓ should return log value given negative value
      ✓ should return log value given positive value
      ✓ should return 0
    p5.prototype.mag
      ✓ should be a function
      ✓ should return a number
      ✓ should return correct magitude
      ✓ should return positive magnitude given negative inputs
    p5.prototype.map
      ✓ should be a function
      ✓ should return a number
      ✓ should return scaled value
      ✓ should extrapolate by default
      ✓ shaould clamp correctly
    p5.prototype.max
      ✓ should be a function
      ✓ should return larger left argument
      ✓ should return larger right argument
      ✓ should return single value
      ✓ should return larger value from array
      ✓ should return larger value from array
      ✓ should return single value from array
    p5.prototype.min
      ✓ should be a function
      ✓ should return smaller right  argument
      ✓ should return smaller left  argument
      ✓ should return single value
      ✓ should return smaller value from array
      ✓ should return smaller value from array
      ✓ should return single value from array
    p5.prototype.norm
      ✓ should be a function
      ✓ should return scaled decimal value
    p5.prototype.constrain
      ✓ should be a function
      ✓ should return same number
      ✓ should return lower bound
      ✓ should return upper bound
    p5.prototype.sq
      ✓ should be a function
      ✓ should return sauare value
      ✓ should return squared value given negative number
    p5.prototype.pow
      ✓ should be a function
      ✓ should return pow for negative exponential
      ✓ should return pow for positive exponential
    p5.prototype.round
      ✓ should be a function
      ✓ should round down
      ✓ should round up from midpoint
      ✓ should round up
    p5.prototype.sqrt
      ✓ should be a function
      ✓ should return square root

  Noise
    p5.prototype.noise
      ✓ should return a number
      ✓ should return a number 0 < n < 1
    p5.prototype.noiseSeed
      ✓ should return a number 0 < n < 1
      ✓ should return same sequence of numbers

  p5.Vector
    p5.prototype.createVector()
      ✓ should create instance of p5.Vector
      ✓ should have x, y, z be initialized to 0
    p5.prototype.createVector()
      ✓ should have x, y, z be initialized to 1,2,3
    new p5.Vector()
      ✓ should set constant to DEGREES
      ✓ should have x, y, z be initialized to 0
    new p5.Vector(1, 2, 3)
      ✓ should have x, y, z be initialized to 1,2,3
    new p5.Vector(1,2,undefined)
      ✓ should have x, y, z be initialized to 1,2,0
    p5.prototype.rotate() RADIANS
      ✓ should have x, y, z rotated to 0, -1, 0 (RADIANS)
    p5.prototype.rotate() DEGREES
      ✓ should have x, y, z rotated to 0, -1, 0 (DEGREES)
    p5.prototype.angleBetween()
      ✓ should not trip on rounding issues in 2D space
      ✓ should not trip on rounding issues in 3D space
      ✓ should return NaN for zero vector
    set()
      with p5.Vector
        ✓ should have x, y, z be initialized to the vector's x, y, z
      with Array
        ✓ [2,4] should set x === 2, y === 4, z === 0
        ✓ should have x, y, z be initialized to the array's 0,1,2 index
      set(1,2,3)
        ✓ should have x, y, z be initialized to the 1, 2, 3
    copy()
      ✓ should not return the same instance
      ✓ should return the calling object's x, y, z
    add()
      with p5.Vector
        ✓ should add x, y, z  from the vector argument
      with Array
        ✓ should add the array's 0,1,2 index
        add([2, 4])
          ✓ should add the x and y components
      add(3,5)
        ✓ should add the x and y components
      add(2,3,4)
        ✓ should add the x, y, z components
      p5.Vector.add(v1, v2)
        ✓ should return neither v1 nor v2
        ✓ should be sum of the two p5.Vectors
    sub()
      with p5.Vector
        ✓ should sub x, y, z  from the vector argument
      with Array
        ✓ should substract from the array's 0,1,2 index
        sub([2, 4])
          ✓ should sub the x and y components
      sub(3,5)
        ✓ should substract the x and y components
      sub(2,3,4)
        ✓ should substract the x, y, z components
      p5.Vector.sub(v1, v2)
        ✓ should return neither v1 nor v2
        ✓ should be v1 - v2
    mult()
      ✓ should return the same object
p5.Vector.prototype.mult: n is undefined or not a finite number
      ✓ should not change x, y, z if no argument is given
p5.Vector.prototype.mult: n is undefined or not a finite number
      ✓ should not change x, y, z if n is not a finite number
      with scalar
        ✓ multiply the x, y, z with the scalar
      p5.Vector.mult(v, n)
        ✓ should return a new p5.Vector
        ✓ should multiply the scalar
    div()
      ✓ should return the same object
p5.Vector.prototype.div: n is undefined or not a finite number
      ✓ should not change x, y, z if no argument is given
p5.Vector.prototype.div: n is undefined or not a finite number
      ✓ should not change x, y, z if n is not a finite number
      with scalar
        ✓ divide the x, y, z with the scalar
p5.Vector.prototype.div: divide by 0
        ✓ should not change x, y, z if n is 0
      p5.Vector.div(v, n)
        ✓ should not be undefined
        ✓ should return a new p5.Vector
        ✓ should divide the scalar
    dot
      ✓ should return a number
      with p5.Vector
        ✓ should be the dot product of the vector
      with x, y, z
        ✓ should be the dot product with x, y
        ✓ should be the dot product with x, y, z
      p5.Vector.dot(v, n)
        ✓ should return a number
        ✓ should be the dot product of the two vectors
    cross
      ✓ should return a new product
      with p5.Vector
        ✓ should cross x, y, z  from the vector argument
      p5.Vector.cross(v1, v2)
        ✓ should not be undefined
        ✓ should return neither v1 nor v2
        ✓ should the cross product of v1 and v2
    dist
      ✓ should return a number
      ✓ should return distance between two vectors
      ✓ should return distance between two vectors
      ✓ should be commutative
    p5.Vector.dist(v1, v2)
      ✓ should return a number
      ✓ should be commutative
    normalize
      ✓ should return the same object
      with unit vector
        ✓ should not change the vector
      with 2,2,1
        ✓ should normalize to 0.66,0.66,0.33
    limit
      ✓ should return the same object
      with a vector larger than the limit
        ✓ should limit the vector
      with a vector smaller than the limit
        ✓ should not limit the vector
    setMag
      ✓ should return the same object
      ✓ should set the magnitude of the vector
      ✓ should set the magnitude of the vector
    heading
      ✓ should return a number
      ✓ heading for vector pointing right is 0
      ✓ heading for vector pointing down is PI/2
      ✓ heading for vector pointing left is PI
    rotate
      ✓ should return the same object
      ✓ should rotate the vector
      ✓ should rotate the vector
    lerp
      ✓ should return the same object
      with x, y, z, amt
        ✓ should lerp x by amt
        ✓ should lerp y by amt
        ✓ should lerp z by amt
      with no amt
        ✓ should assume 0 amt
    p5.Vector.lerp(v1, v2, amt)
      ✓ should not be undefined
      ✓ should be a p5.Vector
      ✓ should return neither v1 nor v2
      ✓ should res to be [1, 1, 1]
    p5.Vector.fromAngle(angle)
      ✓ should be a p5.Vector with values (0,1)
    p5.Vector.random2D()
      ✓ should be a unit p5.Vector
    p5.Vector.random3D()
      ✓ should be a unit p5.Vector
    v1.angleBetween(v2)
      ✓ should be a Number
      with [1,0,0] and [2,2,0]
        ✓ should be 45 deg difference
      with [2,0,0] and [-2,0,0]
        ✓ should be 180 deg difference
      with [2,0,0] and [-2,-2,0]
        ✓ should be 135 deg difference
        ✓ should be commutative
    array
      ✓ should return an array
      ✓ should return an with the x y and z components

  Random
    p5.prototype.random
      random()
        ✓ should return a number
        ✓ should return a number 0 <= n < 1
        ✓ should return same sequence of numbers
      random(5)
        ✓ should return a number 0 <= n < 5
      random(1, 10)
        ✓ should return a number 1 <= n < 10
      random(["apple", "pear", "orange", "grape"])
        ✓ should return a fruit

  Trigonometry
    p5.prototype.angleMode
      ✓ should set constant to DEGREES
      ✓ should set constant to RADIANS
      ✓ should always be RADIANS or DEGREES
    p5.prototype.degrees
      ✓ should return the angle in radians when angleMode is DEGREES
      ✓ should return the angle in radians when angleMode is RADIANS
    p5.prototype.radians
      ✓ should return the angle in degrees when angleMode is RADIANS
      ✓ should return the angle in degrees when angleMode is DEGREES
    p5.prototype.asin
      ✓ should handle degrees
      ✓ should handle radians
    p5.prototype.atan
      ✓ should handle degrees
      ✓ should handle radians
    p5.prototype.acos
      ✓ should handle degrees
      ✓ should handle radians
    p5.prototype.sin
      ✓ should handle degrees
      ✓ should handle radians
    p5.prototype.cos
      ✓ should handle degrees
      ✓ should handle radians
    p5.prototype.tan
      ✓ should handle degrees
      ✓ should handle radians
    p5.prototype.atan2
      ✓ should handle degrees
      ✓ should handle radians

  Font Loading
    Test in preload() with success callback
      ✓ Load asynchronously and use success callback
    setup() after preload() with success callback
      ✓ Resource should be loaded if preload() finished
    Fonts outside preload()
      ✓ loadFont should be a function
      loadFont() with callback
        ✓ should call success-cb w/ obj when font loads
        ✓ should call error-callback when font load fails

  Array
    p5.prototype.append
      ✓ should be a function
      ✓ should return an array with appended value
    p5.prototype.arrayCopy
      ✓ should be a function
      src, dst
        ✓ should return fully copied array
      src, dst, len
        ✓ should return an array with first 2 elements copied over
        ✓ should return an array with first 4 elements copied over
      src, srcPosition, dst, dstPosition, length
        ✓ should copy src[1 - 2] to dst[0 - 1]
        ✓ should copy src[1 - 2] to dst [1 - 2]
        ✓ should copy src[3 - 4] to dst[0 - 1]
    p5.prototype.concat
      ✓ should concat empty arrays
      ✓ should concat arrays
    p5.prototype.reverse
      ✓ should reverse empty array
      ✓ should reverse array
    p5.prototype.shorten
      ✓ should not have error for shortening empty array
      ✓ should shorten array
    p5.prototype.sort
      ✓ should not have error for sorting empty array
      ✓ should sort alphabetic array lexicographically
      ✓ should sort numerical array from smallest to largest
      ✓ should sort numerical array from smallest to largest for only first 2 elements
    p5.prototype.splice
      ✓ should insert 4 into position 1
      ✓ should splice in array of values
    p5.prototype.subset
      ✓ should get subset from index 1 to end
      ✓ should subset arr[1 - 2]

  String functions
    p5.prototype.join
      ✓ should be a function
      ✓ should return joined string
    p5.prototype.match
      ✓ should be a function
      ✓ should return correct index of match strings
    p5.prototype.matchAll
      ✓ should be a function
      ✓ should return correct array of strings
    p5.prototype.nf
      ✓ should be a function
      ✓ should return correct string
      ✓ should return correct string
    p5.prototype.nfc
      ✓ should be a function
      ✓ should return correct string
      ✓ should return correct string
    p5.prototype.nfp
      ✓ should be a function
      ✓ should return correct string
      ✓ should return correct string
    p5.prototype.nfs
      ✓ should be a function
      ✓ should return correct string
      ✓ should return correct string
    p5.prototype.split
      ✓ should be a function
      ✓ should return correct index of match strings
    p5.prototype.splitTokens
      ✓ should be a function
      ✓ should return correct index of match strings
    p5.prototype.trim
      ✓ should be a function
      ✓ should return correct strings

  time and date
    p5.prototype.year
      ✓ should be a function
      ✓ should return this year
    p5.prototype.day
      ✓ should be a function
      ✓ should return todays day
    p5.prototype.month
      ✓ should be a function
      ✓ should return today's month
    p5.prototype.hour
      ✓ should be a function
      ✓ should return this hour
    p5.prototype.second
      ✓ should be a function
      ✓ should return this second
    p5.prototype.minute
      ✓ should be a function
      ✓ should return a number that is this minute
    p5.prototype.millis
      ✓ should be a function
      ✓ result should be a number
      ✓ result should be greater than running time
      ✓ result should be > newResult

  setup() after preload() without success callback
    ✓ Resource should be loaded if preload() finished

  Test in preload() with success callback
    ✓ Load asynchronously and use success callback

  setup() after preload() with success callback
    ✓ should be loaded if preload() finished

  setup() after preload() without success callback
    ✓ should be loaded now preload() finished


  681 passing (3s)
  2 pending
  1 failing

  1) Files
       p5.prototype.loadStrings
         should include empty strings:
     length of data is 6: expected [ Array(5) ] to have a length of 6 but got 5
  



[31m>> [39m2/1368 tests failed (7.04s)
[33mWarning: Task "mocha:test" failed. Use --force to continue.[39m

[31mAborted due to warnings.[39m
+ cd /testbed
+ git config --global --add safe.directory /testbed
+ cd /testbed
+ git checkout 52151068bdc7e95150a189392fbd5ec0a48318f0 test/unit/io/files_input.js
Updated 0 paths from 7a32164b
+ git apply --verbose --reject -
Checking patch test/unit/assets/empty_lines.txt...
Checking patch test/unit/io/files_input.js...
Applied patch test/unit/assets/empty_lines.txt cleanly.
Applied patch test/unit/io/files_input.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:42) Warning: Accessing non-existent property 'cat' of module exports inside circular dependency
(Use `node --trace-warnings ...` to show where the warning was created)
(node:42) Warning: Accessing non-existent property 'cd' of module exports inside circular dependency
(node:42) Warning: Accessing non-existent property 'chmod' of module exports inside circular dependency
(node:42) Warning: Accessing non-existent property 'cp' of module exports inside circular dependency
(node:42) Warning: Accessing non-existent property 'dirs' of module exports inside circular dependency
(node:42) Warning: Accessing non-existent property 'pushd' of module exports inside circular dependency
(node:42) Warning: Accessing non-existent property 'popd' of module exports inside circular dependency
(node:42) Warning: Accessing non-existent property 'echo' of module exports inside circular dependency
(node:42) Warning: Accessing non-existent property 'tempdir' of module exports inside circular dependency
(node:42) Warning: Accessing non-existent property 'pwd' of module exports inside circular dependency
(node:42) Warning: Accessing non-existent property 'exec' of module exports inside circular dependency
(node:42) Warning: Accessing non-existent property 'ls' of module exports inside circular dependency
(node:42) Warning: Accessing non-existent property 'find' of module exports inside circular dependency
(node:42) Warning: Accessing non-existent property 'grep' of module exports inside circular dependency
(node:42) Warning: Accessing non-existent property 'head' of module exports inside circular dependency
(node:42) Warning: Accessing non-existent property 'ln' of module exports inside circular dependency
(node:42) Warning: Accessing non-existent property 'mkdir' of module exports inside circular dependency
(node:42) Warning: Accessing non-existent property 'rm' of module exports inside circular dependency
(node:42) Warning: Accessing non-existent property 'mv' of module exports inside circular dependency
(node:42) Warning: Accessing non-existent property 'sed' of module exports inside circular dependency
(node:42) Warning: Accessing non-existent property 'set' of module exports inside circular dependency
(node:42) Warning: Accessing non-existent property 'sort' of module exports inside circular dependency
(node:42) Warning: Accessing non-existent property 'tail' of module exports inside circular dependency
(node:42) Warning: Accessing non-existent property 'test' of module exports inside circular dependency
(node:42) Warning: Accessing non-existent property 'to' of module exports inside circular dependency
(node:42) Warning: Accessing non-existent property 'toEnd' of module exports inside circular dependency
(node:42) Warning: Accessing non-existent property 'touch' of module exports inside circular dependency
(node:42) Warning: Accessing non-existent property 'uniq' of module exports inside circular dependency
(node:42) Warning: Accessing non-existent property 'which' of module exports inside circular dependency
(node:42) [DEP0066] DeprecationWarning: OutgoingMessage.prototype._headers is deprecated
+ : '>>>>> End Test Output'
+ git checkout 52151068bdc7e95150a189392fbd5ec0a48318f0 test/unit/io/files_input.js
Updated 1 path from 7a32164b
