Using HAPI schema version 2.0-1

http://hapi-server.org/servers/TestData/hapi
  Passis.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  Passis.ContentType() Expect HTTP Content-Type to match /^text\/html/; Got: text/html; charset=utf-8

http://hapi-server.org/servers/TestData/hapi/capabilities
  Passis.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json; charset=utf-8
  Passis.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
  Passis.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  Passis.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  Passis.HAPIJSON() Expect body to be valid capabilities schema; Got: is valid
  Pass: Expect outputFormats to have 'csv'; Got: csv,binary,json

http://hapi-server.org/servers/TestData/hapi/catalog
  Passis.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json; charset=utf-8
  Passis.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
  Passis.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  Passis.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  Passis.HAPIJSON() Expect body to be valid catalog schema; Got: is valid
  Passis.Unique() Expect all 'id' values in objects in datasets array to be unique; Got: All unique.
  Passis.TooLong() Expect titles in objects to be <= 40 characters; Got: All objects in catalog are shorter than 40 characters

http://hapi-server.org/servers/TestData/hapi/info?id=a_test_of_an_invalid_id_by_verifier-nodejs
  Passis.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json; charset=utf-8
  Passis.ErrorCorrect() Expect HTTP code to be 404; Got: 404
  Warnis.ErrorInformative() Want HTTP header status message to match 'HAPI 1406'. (Explanation.); Got: 'HAPI error 1406: unknown dataset id'
  Passis.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  Passis.HAPIJSON() Expect body to be valid HAPIStatus schema; Got: is valid
  Passis.ErrorCorrect() Expect HAPI code to be 1406; Got: 1406
  Passis.ErrorInformative() Want status.message element of response to contain the string 'HAPI error 1406: unknown dataset id' (default HAPI error message); Got: 'HAPI error 1406: unknown dataset id'

http://hapi-server.org/servers/TestData/hapi/info?id=dataset1
  NoteVisually check data
  Passis.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  Passis.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json; charset=utf-8
  Passis.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  Passis.HAPIJSON() Expect body to be valid info schema; Got: is valid
  Passis.Unique() Expect all 'name' values in objects in parameters array to be unique; Got: All unique.
  Passis.FormatInHeader() Info response should not have 'format' specified.; Got: No format given.
  Passis.FirstParameterOK() First parameter should (not must) be named 'Time' b/c clients will likely label first parameter as 'Time' on plot to protect against first parameter names that are not sensible.; Got: Time
  Passis.FirstParameterOK() First parameter must have a fill of null or it should not be specified.; Got: null
  Passis.TimeIncreasing() Expect info.startDate < info.stopDate; Got: startDate = 1970-01-01T00Z; stopDate = 2016-12-31T00Z
  Passis.TimeIncreasing() Expect info.sampleStartDate < info.sampleStopDate; Got: sampleStartDate = 1970-01-01T00Z; sampleStopDate = 1970-01-01T00:00:11Z
  Passis.UnitsOK Expect isotime units to be UTC.; Got: type = 'isotime' and units = 'UTC' for parameter Time.
  Passis.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = isotime and length = 24 for parameter Time
  Passis.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter scalar.
  Passis.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter scalar
  Passis.FillOK() Expect fill value for a integer parameter to not have a decimal point; Got: fill = '-1e31' for parameter scalarint.
  Passis.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = integer and length = undefined for parameter scalarint
  Passis.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = string and length = 3 for parameter scalarstr
  Passis.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = integer and length = undefined for parameter scalarcats
  Passis.UnitsOK Expect isotime units to be UTC.; Got: type = 'isotime' and units = 'UTC' for parameter scalariso.
  Passis.FillOK() Expect length of fill value for a isotime parameter to be equal to length of the string parameter; Got: fill = '0000-00-00:T00:00:00Z' for parameter scalariso.
  Passis.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = isotime and length = 20 for parameter scalariso
  Passis.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter vector.
  Passis.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter vector
  Passis.SizeAppropriate() Size is not needed if all elements are 1.; Got: size = [3] for parameter vector
  Passis.FillOK() Expect fill value for a integer parameter to not have a decimal point; Got: fill = '-1e31' for parameter vectorint.
  Passis.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = integer and length = undefined for parameter vectorint
  Passis.SizeAppropriate() Size is not needed if all elements are 1.; Got: size = [3] for parameter vectorint
  Passis.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = string and length = 3 for parameter vectorstr
  Passis.SizeAppropriate() Size is not needed if all elements are 1.; Got: size = [3] for parameter vectorstr
  Passis.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = integer and length = undefined for parameter vectorcats
  Passis.SizeAppropriate() Size is not needed if all elements are 1.; Got: size = [3] for parameter vectorcats
  Passis.UnitsOK Expect isotime units to be UTC.; Got: type = 'isotime' and units = 'UTC' for parameter vectoriso.
  Passis.FillOK() Expect length of fill value for a isotime parameter to be equal to length of the string parameter; Got: fill = '0000-00-00:T00:00:00Z' for parameter vectoriso.
  Passis.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = isotime and length = 20 for parameter vectoriso
  Passis.SizeAppropriate() Size is not needed if all elements are 1.; Got: size = [3] for parameter vectoriso
  Passis.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter vectormulti.
  Passis.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter vectormulti
  Passis.SizeAppropriate() Size is not needed if all elements are 1.; Got: size = [3,2] for parameter vectormulti
  Passis.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter transform.
  Passis.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter transform
  Passis.SizeAppropriate() Size is not needed if all elements are 1.; Got: size = [9] for parameter transform
  Passis.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter transformmulti.
  Passis.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter transformmulti
  Passis.SizeAppropriate() Size is not needed if all elements are 1.; Got: size = [3,3] for parameter transformmulti
  Passis.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter spectra.
  Passis.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter spectra
  Passis.SizeAppropriate() Size is not needed if all elements are 1.; Got: size = [10] for parameter spectra
  Passis.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter spectranobins.
  Passis.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter spectranobins
  Passis.SizeAppropriate() Size is not needed if all elements are 1.; Got: size = [10] for parameter spectranobins
  Passis.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter spectralarge.
  Passis.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter spectralarge
  Passis.SizeAppropriate() Size is not needed if all elements are 1.; Got: size = [100] for parameter spectralarge
  Passis.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter spectramulti.
  Passis.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter spectramulti
  Passis.SizeAppropriate() Size is not needed if all elements are 1.; Got: size = [10,2] for parameter spectramulti
  Passis.CadenceValid() Expect cadence to be a valid ISO8601 duration; Got: PT1S
  Passis.CadenceOK() Expect (sampleStopDate-sampleStartDate)/cadence > 10; Got: (sampleStartDate-sampleStopDate)/cadence = 11

http://hapi-server.org/servers/TestData/hapi/info?id=dataset1&parameters=scalar
  Passis.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  Passis.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json; charset=utf-8
  Passis.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  Passis.HAPIJSON() Expect body to be valid info schema; Got: is valid
  Pass: Expect # parameters in JSON to be 2 when one non-time parameter is requested; Got: 2 parameters.
  Pass: Expect info response for one parameter to match content in response for all parameters; Got: Match.

  http://hapi-server.org/servers/TestData/hapi/data?id=dataset1&time.min=1970-01-01Z&time.max=1970-01-01T00:00:11Z
    Passis.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    Passis.FileOK() Expect file to not be empty; Got: 28229 bytes.
    Passis.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    Passis.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv; charset=utf-8
    Passis.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    Passis.FileOK() Expect first character of CSV response to be an integer.; Got: 1
    Passis.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    Passis.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '2\n'
    Passis.FileOK() Expect at least one newline in CSV response.; Got: 11 newlines
    Passis.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (185) - (185)

  http://hapi-server.org/servers/TestData/hapi/data?id=dataset1&time.min=1970-001Z&time.max=1970-001T00:00:11Z
    Passis.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    Passis.FileOK() Expect file to not be empty; Got: 28229 bytes.
    Passis.FileDataOK() Expect data response to be same as previous request given differing request URLs. (Checks byte equivalence not content equivalence.); Got: Match

  http://hapi-server.org/servers/TestData/hapi/data?id=dataset1&time.min=1970-01-01Z&time.max=1970-01-01T00:00:11Z&include=header
    Passis.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    Passis.FileOK() Expect file to not be empty; Got: 28229 bytes.
    Passis.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
    Passis.FormatInHeader() Header in csv response should have 'format: csv' specified.; Got: Format of 'csv' specified.
    Passis.HeaderSame() Expect header in info response to match header in data response when 'include=header' requested.; Got: Matching headers.
    Passis.FileDataOK() Expect data response to be same as previous request given differing request URLs. (Checks byte equivalence not content equivalence.); Got: Match

  http://hapi-server.org/servers/TestData/hapi/data?id=dataset1&parameters=Time&time.min=1970-01-01Z&time.max=1970-01-01T00:00:11Z
    Passis.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    Passis.FileOK() Expect file to not be empty; Got: 250 bytes.
    Passis.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    Passis.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv; charset=utf-8
    Passis.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    Passis.FileOK() Expect first character of CSV response to be an integer.; Got: 1
    Passis.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    Passis.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters 'Z\n'
    Passis.FileOK() Expect at least one newline in CSV response.; Got: 11 newlines
    Passis.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    Passis.HAPITime() Expect time column to contain valid HAPI time strings.; Got: Valid HAPI Time format
    Passis.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV
    Passis.TimeInBounds() Expect first time in CSV >= 1970-01-01 and last time in CSV < 1970-01-01T00:00:11 (only checks to ms); Got: First time = 1970-01-01T00:00:00.000; LastTime = 1970-01-01T00:00:09.000
    Passis.SizeCorrect() Expect number of commas on first line to be 0 because only Time requested.; Got: 0 commas

  http://hapi-server.org/servers/TestData/hapi/data?id=dataset1&parameters=scalar&time.min=1970-01-01Z&time.max=1970-01-01T00:00:11Z
    Passis.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    Passis.FileOK() Expect file to not be empty; Got: 436 bytes.
    Passis.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    Passis.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv; charset=utf-8
    Passis.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    Passis.FileOK() Expect first character of CSV response to be an integer.; Got: 1
    Passis.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    Passis.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '6\n'
    Passis.FileOK() Expect at least one newline in CSV response.; Got: 11 newlines
    Passis.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    Passis.HAPITime() Expect time column to contain valid HAPI time strings.; Got: Valid HAPI Time format
    Passis.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV
    Passis.TimeInBounds() Expect first time in CSV >= 1970-01-01 and last time in CSV < 1970-01-01T00:00:11 (only checks to ms); Got: First time = 1970-01-01T00:00:00.000; LastTime = 1970-01-01T00:00:09.000
    Passis.Float() Expect Math.abs(parseFloat('0')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('0'.trim()) == true in column 1 on first line.; Got: /^-?d*(.d+)?$/.test('0'.trim()) = true
    Passis.SizeCorrect() Expect number of commas on first line to be 1 because no size given.; Got: 1 commas
    Passis.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (2) - (2)

  http://hapi-server.org/servers/TestData/hapi/data?id=dataset1&parameters=scalarint&time.min=1970-01-01Z&time.max=1970-01-01T00:00:11Z
    Passis.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    Passis.FileOK() Expect file to not be empty; Got: 278 bytes.
    Passis.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    Passis.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv; charset=utf-8
    Passis.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    Passis.FileOK() Expect first character of CSV response to be an integer.; Got: 1
    Passis.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    Passis.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '7\n'
    Passis.FileOK() Expect at least one newline in CSV response.; Got: 11 newlines
    Passis.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    Passis.HAPITime() Expect time column to contain valid HAPI time strings.; Got: Valid HAPI Time format
    Passis.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV
    Passis.TimeInBounds() Expect first time in CSV >= 1970-01-01 and last time in CSV < 1970-01-01T00:00:11 (only checks to ms); Got: First time = 1970-01-01T00:00:00.000; LastTime = 1970-01-01T00:00:09.000
    Passis.Integer() Expect (parseInt('0') < 2^31 - 1 || parseInt('0') > -2^31) && parseInt(0) == parseFloat(0) in column 1 on first line.; Got: parseInt(0) = 0 and parseFloat(0) = 0
    Passis.SizeCorrect() Expect number of commas on first line to be 1 because no size given.; Got: 1 commas
    Passis.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (2) - (2)

  http://hapi-server.org/servers/TestData/hapi/data?id=dataset1&parameters=scalarstr&time.min=1970-01-01Z&time.max=1970-01-01T00:00:11Z
    Passis.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    Passis.FileOK() Expect file to not be empty; Got: 290 bytes.
    Passis.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    Passis.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv; charset=utf-8
    Passis.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    Passis.FileOK() Expect first character of CSV response to be an integer.; Got: 1
    Passis.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    Passis.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters 'F\n'
    Passis.FileOK() Expect at least one newline in CSV response.; Got: 11 newlines
    Passis.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    Passis.HAPITime() Expect time column to contain valid HAPI time strings.; Got: Valid HAPI Time format
    Passis.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV
    Passis.TimeInBounds() Expect first time in CSV >= 1970-01-01 and last time in CSV < 1970-01-01T00:00:11 (only checks to ms); Got: First time = 1970-01-01T00:00:00.000; LastTime = 1970-01-01T00:00:09.000
    Passis.CorrectLength() Expect (trimmed length of scalarstr string parameter in CSV) - (parameters.scalarstr.length) = 0.; Got: (3) - (3)
    Passis.SizeCorrect() Expect number of commas on first line to be 1 because no size given.; Got: 1 commas
    Passis.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (2) - (2)

  http://hapi-server.org/servers/TestData/hapi/data?id=dataset1&parameters=scalarcats&time.min=1970-01-01Z&time.max=1970-01-01T00:00:11Z
    Passis.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    Passis.FileOK() Expect file to not be empty; Got: 270 bytes.
    Passis.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    Passis.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv; charset=utf-8
    Passis.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    Passis.FileOK() Expect first character of CSV response to be an integer.; Got: 1
    Passis.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    Passis.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '0\n'
    Passis.FileOK() Expect at least one newline in CSV response.; Got: 11 newlines
    Passis.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    Passis.HAPITime() Expect time column to contain valid HAPI time strings.; Got: Valid HAPI Time format
    Passis.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV in first 5 lines.
    Passis.TimeInBounds() Expect first time in CSV >= 1970-01-01 and last time in CSV < 1970-01-01T00:00:11 (only checks to ms); Got: First time = 1970-01-01T00:00:00.000; LastTime = 1970-01-01T00:00:09.000
    Passis.Integer() Expect (parseInt('0') < 2^31 - 1 || parseInt('0') > -2^31) && parseInt(0) == parseFloat(0) in column 1 on first line.; Got: parseInt(0) = 0 and parseFloat(0) = 0
    Passis.SizeCorrect() Expect number of commas on first line to be 1 because no size given.; Got: 1 commas
    Passis.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (2) - (2)

  http://hapi-server.org/servers/TestData/hapi/data?id=dataset1&parameters=scalariso&time.min=1970-01-01Z&time.max=1970-01-01T00:00:11Z
    Passis.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    Passis.FileOK() Expect file to not be empty; Got: 460 bytes.
    Passis.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    Passis.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv; charset=utf-8
    Passis.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    Passis.FileOK() Expect first character of CSV response to be an integer.; Got: 1
    Passis.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    Passis.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters 'Z\n'
    Passis.FileOK() Expect at least one newline in CSV response.; Got: 11 newlines
    Passis.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    Passis.HAPITime() Expect time column to contain valid HAPI time strings.; Got: Valid HAPI Time format
    Passis.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV
    Passis.TimeInBounds() Expect first time in CSV >= 1970-01-01 and last time in CSV < 1970-01-01T00:00:11 (only checks to ms); Got: First time = 1970-01-01T00:00:00.000; LastTime = 1970-01-01T00:00:09.000
    Passis.ISO8601() Expect moment('1970-01-01T00:00:01Z',moment.ISO_8601).isValid() == true in column 1 on first line.; Got: moment(1970-01-01T00:00:01Z,moment.ISO_8601).isValid() = true
    Passis.CorrectLength() Expect (trimmed length of scalariso string parameter in CSV) - (parameters.scalariso.length) = 0.; Got: (20) - (20)
    Passis.SizeCorrect() Expect number of commas on first line to be 1 because no size given.; Got: 1 commas
    Passis.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (2) - (2)

  http://hapi-server.org/servers/TestData/hapi/data?id=dataset1&parameters=vector&time.min=1970-01-01Z&time.max=1970-01-01T00:00:11Z
    Passis.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    Passis.FileOK() Expect file to not be empty; Got: 817 bytes.
    Passis.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    Passis.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv; charset=utf-8
    Passis.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    Passis.FileOK() Expect first character of CSV response to be an integer.; Got: 1
    Passis.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    Passis.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '7\n'
    Passis.FileOK() Expect at least one newline in CSV response.; Got: 11 newlines
    Passis.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    Passis.HAPITime() Expect time column to contain valid HAPI time strings.; Got: Valid HAPI Time format
    Passis.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV
    Passis.TimeInBounds() Expect first time in CSV >= 1970-01-01 and last time in CSV < 1970-01-01T00:00:11 (only checks to ms); Got: First time = 1970-01-01T00:00:00.000; LastTime = 1970-01-01T00:00:09.000
    Passis.Float() Expect Math.abs(parseFloat('0')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('0'.trim()) == true in column 1 on first line.; Got: /^-?d*(.d+)?$/.test('0'.trim()) = true
    Passes are being suppressed.
    Passis.Float() Expect Math.abs(parseFloat('-1')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('-1'.trim()) == true in column 3 on first line.; Got: /^-?d*(.d+)?$/.test('-1'.trim()) = true
    Passis.SizeCorrect() Expect number of commas on first line to be product of elements in size array [3]; Got: 3 commas and product of elements in size array [3] = 3
    Passis.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (4) - (4)

  http://hapi-server.org/servers/TestData/hapi/data?id=dataset1&parameters=vectorint&time.min=1970-01-01Z&time.max=1970-01-01T00:00:11Z
    Passis.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    Passis.FileOK() Expect file to not be empty; Got: 334 bytes.
    Passis.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    Passis.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv; charset=utf-8
    Passis.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    Passis.FileOK() Expect first character of CSV response to be an integer.; Got: 1
    Passis.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    Passis.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '7\n'
    Passis.FileOK() Expect at least one newline in CSV response.; Got: 11 newlines
    Passis.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    Passis.HAPITime() Expect time column to contain valid HAPI time strings.; Got: Valid HAPI Time format
    Passis.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV
    Passis.TimeInBounds() Expect first time in CSV >= 1970-01-01 and last time in CSV < 1970-01-01T00:00:11 (only checks to ms); Got: First time = 1970-01-01T00:00:00.000; LastTime = 1970-01-01T00:00:09.000
    Passis.Integer() Expect (parseInt('0') < 2^31 - 1 || parseInt('0') > -2^31) && parseInt(0) == parseFloat(0) in column 1 on first line.; Got: parseInt(0) = 0 and parseFloat(0) = 0
    Passes are being suppressed.
    Passis.Integer() Expect (parseInt('0') < 2^31 - 1 || parseInt('0') > -2^31) && parseInt(0) == parseFloat(0) in column 3 on first line.; Got: parseInt(0) = 0 and parseFloat(0) = 0
    Passis.SizeCorrect() Expect number of commas on first line to be product of elements in size array [3]; Got: 3 commas and product of elements in size array [3] = 3
    Passis.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (4) - (4)

  http://hapi-server.org/servers/TestData/hapi/data?id=dataset1&parameters=vectorstr&time.min=1970-01-01Z&time.max=1970-01-01T00:00:11Z
    Passis.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    Passis.FileOK() Expect file to not be empty; Got: 370 bytes.
    Passis.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    Passis.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv; charset=utf-8
    Passis.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    Passis.FileOK() Expect first character of CSV response to be an integer.; Got: 1
    Passis.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    Passis.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters 'F\n'
    Passis.FileOK() Expect at least one newline in CSV response.; Got: 11 newlines
    Passis.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    Passis.HAPITime() Expect time column to contain valid HAPI time strings.; Got: Valid HAPI Time format
    Passis.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV
    Passis.TimeInBounds() Expect first time in CSV >= 1970-01-01 and last time in CSV < 1970-01-01T00:00:11 (only checks to ms); Got: First time = 1970-01-01T00:00:00.000; LastTime = 1970-01-01T00:00:09.000
    Passis.CorrectLength() Expect (trimmed length of vectorstr string parameter in CSV) - (parameters.vectorstr.length) = 0.; Got: (3) - (3)
    Passes are being suppressed.
    Passis.CorrectLength() Expect (trimmed length of vectorstr string parameter in CSV) - (parameters.vectorstr.length) = 0.; Got: (3) - (3)
    Passis.SizeCorrect() Expect number of commas on first line to be product of elements in size array [3]; Got: 3 commas and product of elements in size array [3] = 3
    Passis.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (4) - (4)

  http://hapi-server.org/servers/TestData/hapi/data?id=dataset1&parameters=vectorcats&time.min=1970-01-01Z&time.max=1970-01-01T00:00:11Z
    Passis.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    Passis.FileOK() Expect file to not be empty; Got: 310 bytes.
    Passis.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    Passis.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv; charset=utf-8
    Passis.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    Passis.FileOK() Expect first character of CSV response to be an integer.; Got: 1
    Passis.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    Passis.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '2\n'
    Passis.FileOK() Expect at least one newline in CSV response.; Got: 11 newlines
    Passis.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    Passis.HAPITime() Expect time column to contain valid HAPI time strings.; Got: Valid HAPI Time format
    Passis.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV
    Passis.TimeInBounds() Expect first time in CSV >= 1970-01-01 and last time in CSV < 1970-01-01T00:00:11 (only checks to ms); Got: First time = 1970-01-01T00:00:00.000; LastTime = 1970-01-01T00:00:09.000
    Passis.Integer() Expect (parseInt('0') < 2^31 - 1 || parseInt('0') > -2^31) && parseInt(0) == parseFloat(0) in column 1 on first line.; Got: parseInt(0) = 0 and parseFloat(0) = 0
    Passes are being suppressed.
    Passis.Integer() Expect (parseInt('2') < 2^31 - 1 || parseInt('2') > -2^31) && parseInt(2) == parseFloat(2) in column 3 on first line.; Got: parseInt(2) = 2 and parseFloat(2) = 2
    Passis.SizeCorrect() Expect number of commas on first line to be product of elements in size array [3]; Got: 3 commas and product of elements in size array [3] = 3
    Passis.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (4) - (4)

  http://hapi-server.org/servers/TestData/hapi/data?id=dataset1&parameters=vectoriso&time.min=1970-01-01Z&time.max=1970-01-01T00:00:11Z
    Passis.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    Passis.FileOK() Expect file to not be empty; Got: 880 bytes.
    Passis.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    Passis.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv; charset=utf-8
    Passis.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    Passis.FileOK() Expect first character of CSV response to be an integer.; Got: 1
    Passis.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    Passis.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters 'Z\n'
    Passis.FileOK() Expect at least one newline in CSV response.; Got: 11 newlines
    Passis.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    Passis.HAPITime() Expect time column to contain valid HAPI time strings.; Got: Valid HAPI Time format
    Passis.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV
    Passis.TimeInBounds() Expect first time in CSV >= 1970-01-01 and last time in CSV < 1970-01-01T00:00:11 (only checks to ms); Got: First time = 1970-01-01T00:00:00.000; LastTime = 1970-01-01T00:00:09.000
    Passis.ISO8601() Expect moment('1970-01-01T00:00:01Z',moment.ISO_8601).isValid() == true in column 1 on first line.; Got: moment(1970-01-01T00:00:01Z,moment.ISO_8601).isValid() = true
    Passis.CorrectLength() Expect (trimmed length of vectoriso string parameter in CSV) - (parameters.vectoriso.length) = 0.; Got: (20) - (20)
    Passis.ISO8601() Expect moment('1970-01-01T00:00:02Z',moment.ISO_8601).isValid() == true in column 2 on first line.; Got: moment(1970-01-01T00:00:02Z,moment.ISO_8601).isValid() = true
    Passes are being suppressed.
    Passis.ISO8601() Expect moment('1970-01-01T00:00:03Z',moment.ISO_8601).isValid() == true in column 3 on first line.; Got: moment(1970-01-01T00:00:03Z,moment.ISO_8601).isValid() = true
    Passis.CorrectLength() Expect (trimmed length of vectoriso string parameter in CSV) - (parameters.vectoriso.length) = 0.; Got: (20) - (20)
    Passis.SizeCorrect() Expect number of commas on first line to be product of elements in size array [3]; Got: 3 commas and product of elements in size array [3] = 3
    Passis.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (4) - (4)

  http://hapi-server.org/servers/TestData/hapi/data?id=dataset1&parameters=vectormulti&time.min=1970-01-01Z&time.max=1970-01-01T00:00:11Z
    Passis.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    Passis.FileOK() Expect file to not be empty; Got: 1384 bytes.
    Passis.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    Passis.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv; charset=utf-8
    Passis.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    Passis.FileOK() Expect first character of CSV response to be an integer.; Got: 1
    Passis.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    Passis.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '7\n'
    Passis.FileOK() Expect at least one newline in CSV response.; Got: 11 newlines
    Passis.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    Passis.HAPITime() Expect time column to contain valid HAPI time strings.; Got: Valid HAPI Time format
    Passis.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV
    Passis.TimeInBounds() Expect first time in CSV >= 1970-01-01 and last time in CSV < 1970-01-01T00:00:11 (only checks to ms); Got: First time = 1970-01-01T00:00:00.000; LastTime = 1970-01-01T00:00:09.000
    Passis.Float() Expect Math.abs(parseFloat('0')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('0'.trim()) == true in column 1 on first line.; Got: /^-?d*(.d+)?$/.test('0'.trim()) = true
    Passes are being suppressed.
    Passis.Float() Expect Math.abs(parseFloat('-1')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('-1'.trim()) == true in column 6 on first line.; Got: /^-?d*(.d+)?$/.test('-1'.trim()) = true
    Passis.SizeCorrect() Expect number of commas on first line to be product of elements in size array [3,2]; Got: 6 commas and product of elements in size array [3,2] = 6
    Passis.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (7) - (7)

  http://hapi-server.org/servers/TestData/hapi/data?id=dataset1&parameters=transform&time.min=1970-01-01Z&time.max=1970-01-01T00:00:11Z
    Passis.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    Passis.FileOK() Expect file to not be empty; Got: 1955 bytes.
    Passis.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    Passis.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv; charset=utf-8
    Passis.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    Passis.FileOK() Expect first character of CSV response to be an integer.; Got: 1
    Passis.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    Passis.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '2\n'
    Passis.FileOK() Expect at least one newline in CSV response.; Got: 11 newlines
    Passis.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    Passis.HAPITime() Expect time column to contain valid HAPI time strings.; Got: Valid HAPI Time format
    Passis.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV in first 1 lines.
    Passis.TimeInBounds() Expect first time in CSV >= 1970-01-01 and last time in CSV < 1970-01-01T00:00:11 (only checks to ms); Got: First time = 1970-01-01T00:00:00.000; LastTime = 1970-01-01T00:00:09.000
    Passis.Float() Expect Math.abs(parseFloat('0')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('0'.trim()) == true in column 1 on first line.; Got: /^-?d*(.d+)?$/.test('0'.trim()) = true
    Passes are being suppressed.
    Passis.Float() Expect Math.abs(parseFloat('0')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('0'.trim()) == true in column 9 on first line.; Got: /^-?d*(.d+)?$/.test('0'.trim()) = true
    Passis.SizeCorrect() Expect number of commas on first line to be product of elements in size array [9]; Got: 9 commas and product of elements in size array [9] = 9
    Passis.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (10) - (10)

  http://hapi-server.org/servers/TestData/hapi/data?id=dataset1&parameters=transformmulti&time.min=1970-01-01Z&time.max=1970-01-01T00:00:11Z
    Passis.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    Passis.FileOK() Expect file to not be empty; Got: 1955 bytes.
    Passis.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    Passis.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv; charset=utf-8
    Passis.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    Passis.FileOK() Expect first character of CSV response to be an integer.; Got: 1
    Passis.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    Passis.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '2\n'
    Passis.FileOK() Expect at least one newline in CSV response.; Got: 11 newlines
    Passis.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    Passis.HAPITime() Expect time column to contain valid HAPI time strings.; Got: Valid HAPI Time format
    Passis.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV
    Passis.TimeInBounds() Expect first time in CSV >= 1970-01-01 and last time in CSV < 1970-01-01T00:00:11 (only checks to ms); Got: First time = 1970-01-01T00:00:00.000; LastTime = 1970-01-01T00:00:09.000
    Passis.Float() Expect Math.abs(parseFloat('0')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('0'.trim()) == true in column 1 on first line.; Got: /^-?d*(.d+)?$/.test('0'.trim()) = true
    Passes are being suppressed.
    Passis.Float() Expect Math.abs(parseFloat('0')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('0'.trim()) == true in column 9 on first line.; Got: /^-?d*(.d+)?$/.test('0'.trim()) = true
    Passis.SizeCorrect() Expect number of commas on first line to be product of elements in size array [3,3]; Got: 9 commas and product of elements in size array [3,3] = 9
    Passis.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (10) - (10)

  http://hapi-server.org/servers/TestData/hapi/data?id=dataset1&parameters=spectra&time.min=1970-01-01Z&time.max=1970-01-01T00:00:11Z
    Passis.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    Passis.FileOK() Expect file to not be empty; Got: 1260 bytes.
    Passis.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    Passis.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv; charset=utf-8
    Passis.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    Passis.FileOK() Expect first character of CSV response to be an integer.; Got: 1
    Passis.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    Passis.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '1\n'
    Passis.FileOK() Expect at least one newline in CSV response.; Got: 11 newlines
    Passis.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    Passis.HAPITime() Expect time column to contain valid HAPI time strings.; Got: Valid HAPI Time format
    Passis.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV
    Passis.TimeInBounds() Expect first time in CSV >= 1970-01-01 and last time in CSV < 1970-01-01T00:00:11 (only checks to ms); Got: First time = 1970-01-01T00:00:00.000; LastTime = 1970-01-01T00:00:09.000
    Passis.Float() Expect Math.abs(parseFloat('0')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('0'.trim()) == true in column 1 on first line.; Got: /^-?d*(.d+)?$/.test('0'.trim()) = true
    Passes are being suppressed.
    Passis.Float() Expect Math.abs(parseFloat('0.1111111111111111')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('0.1111111111111111'.trim()) == true in column 10 on first line.; Got: /^-?d*(.d+)?$/.test('0.1111111111111111'.trim()) = true
    Passis.SizeCorrect() Expect number of commas on first line to be product of elements in size array [10]; Got: 10 commas and product of elements in size array [10] = 10
    Passis.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (11) - (11)

  http://hapi-server.org/servers/TestData/hapi/data?id=dataset1&parameters=spectranobins&time.min=1970-01-01Z&time.max=1970-01-01T00:00:11Z
    Passis.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    Passis.FileOK() Expect file to not be empty; Got: 450 bytes.
    Passis.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    Passis.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv; charset=utf-8
    Passis.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    Passis.FileOK() Expect first character of CSV response to be an integer.; Got: 1
    Passis.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    Passis.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '9\n'
    Passis.FileOK() Expect at least one newline in CSV response.; Got: 11 newlines
    Passis.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    Passis.HAPITime() Expect time column to contain valid HAPI time strings.; Got: Valid HAPI Time format
    Passis.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV
    Passis.TimeInBounds() Expect first time in CSV >= 1970-01-01 and last time in CSV < 1970-01-01T00:00:11 (only checks to ms); Got: First time = 1970-01-01T00:00:00.000; LastTime = 1970-01-01T00:00:09.000
    Passis.Float() Expect Math.abs(parseFloat('0')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('0'.trim()) == true in column 1 on first line.; Got: /^-?d*(.d+)?$/.test('0'.trim()) = true
    Passes are being suppressed.
    Passis.Float() Expect Math.abs(parseFloat('9')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('9'.trim()) == true in column 10 on first line.; Got: /^-?d*(.d+)?$/.test('9'.trim()) = true
    Passis.SizeCorrect() Expect number of commas on first line to be product of elements in size array [10]; Got: 10 commas and product of elements in size array [10] = 10
    Passis.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (11) - (11)

  http://hapi-server.org/servers/TestData/hapi/data?id=dataset1&parameters=spectralarge&time.min=1970-01-01Z&time.max=1970-01-01T00:00:11Z
    Passis.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    Passis.FileOK() Expect file to not be empty; Got: 18570 bytes.
    Passis.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    Passis.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv; charset=utf-8
    Passis.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    Passis.FileOK() Expect first character of CSV response to be an integer.; Got: 1
    Passis.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    Passis.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '2\n'
    Passis.FileOK() Expect at least one newline in CSV response.; Got: 11 newlines
    Passis.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    Passis.HAPITime() Expect time column to contain valid HAPI time strings.; Got: Valid HAPI Time format
    Passis.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV
    Passis.TimeInBounds() Expect first time in CSV >= 1970-01-01 and last time in CSV < 1970-01-01T00:00:11 (only checks to ms); Got: First time = 1970-01-01T00:00:00.000; LastTime = 1970-01-01T00:00:09.000
    Passis.Float() Expect Math.abs(parseFloat('0')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('0'.trim()) == true in column 1 on first line.; Got: /^-?d*(.d+)?$/.test('0'.trim()) = true
    Passes are being suppressed.
    Passis.Float() Expect Math.abs(parseFloat('0.010101010101010102')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('0.010101010101010102'.trim()) == true in column 100 on first line.; Got: /^-?d*(.d+)?$/.test('0.010101010101010102'.trim()) = true
    Passis.SizeCorrect() Expect number of commas on first line to be product of elements in size array [100]; Got: 100 commas and product of elements in size array [100] = 100
    Passis.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (101) - (101)

  http://hapi-server.org/servers/TestData/hapi/data?id=dataset1&parameters=spectramulti&time.min=1970-01-01Z&time.max=1970-01-01T00:00:11Z
    Passis.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    Passis.FileOK() Expect file to not be empty; Got: 2210 bytes.
    Passis.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    Passis.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv; charset=utf-8
    Passis.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    Passis.FileOK() Expect first character of CSV response to be an integer.; Got: 1
    Passis.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    Passis.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '2\n'
    Passis.FileOK() Expect at least one newline in CSV response.; Got: 11 newlines
    Passis.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    Passis.HAPITime() Expect time column to contain valid HAPI time strings.; Got: Valid HAPI Time format
    Passis.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV
    Passis.TimeInBounds() Expect first time in CSV >= 1970-01-01 and last time in CSV < 1970-01-01T00:00:11 (only checks to ms); Got: First time = 1970-01-01T00:00:00.000; LastTime = 1970-01-01T00:00:09.000
    Passis.Float() Expect Math.abs(parseFloat('0')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('0'.trim()) == true in column 1 on first line.; Got: /^-?d*(.d+)?$/.test('0'.trim()) = true
    Passes are being suppressed.
    Passis.Float() Expect Math.abs(parseFloat('0.2222222222222222')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('0.2222222222222222'.trim()) == true in column 20 on first line.; Got: /^-?d*(.d+)?$/.test('0.2222222222222222'.trim()) = true
    Passis.SizeCorrect() Expect number of commas on first line to be product of elements in size array [10,2]; Got: 20 commas and product of elements in size array [10,2] = 20
    Passis.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (21) - (21)

End of validation tests.

Summary: Passes: 561. Warnings: 1. Failures: 0.Warnings and failures repeated below.


http://hapi-server.org/servers/TestData/hapi/info?id=a_test_of_an_invalid_id_by_verifier-nodejs
  Warn: is.ErrorInformative() Want HTTP header status message to match 'HAPI 1406'. (Explanation.); Got: 'HAPI error 1406: unknown dataset id'


Use the following links for visual checks of data and stress testing server.

http://hapi-server.org/plot?server=http://hapi-server.org/servers/TestData/hapi&id=dataset1&format=gallery