TAP version 13 # Subtest: normalizeUlcs strips padding so 0-prefixed codes join to plain ones ok 1 - normalizeUlcs strips padding so 0-prefixed codes join to plain ones --- type: 'test' ... # Subtest: normalizeUlcs keeps a genuine zero rather than emptying it ok 2 - normalizeUlcs keeps a genuine zero rather than emptying it --- type: 'test' ... # Subtest: seriesFromRows keys by school and year ok 3 - seriesFromRows keys by school and year --- type: 'test' ... # Subtest: seriesFromRows skips rows whose value will not parse ok 4 - seriesFromRows skips rows whose value will not parse --- type: 'test' ... # Subtest: seriesFromRows honours a row filter ok 5 - seriesFromRows honours a row filter --- type: 'test' ... # Subtest: chronicFromNyc converts the attending share into a missing share ok 6 - chronicFromNyc converts the attending share into a missing share --- type: 'test' ... # Subtest: chronicFromNyc drops rows with unusable numbers ok 7 - chronicFromNyc drops rows with unusable numbers --- type: 'test' ... # Subtest: a YearValue map reads back the years it was given ok 8 - a YearValue map reads back the years it was given --- type: 'test' ... # Subtest: federalRate converts CRDC counts to a percentage ok 9 - federalRate converts CRDC counts to a percentage --- type: 'test' ... # Subtest: federalRate rejects CRDC suppression codes rather than treating them as counts ok 10 - federalRate rejects CRDC suppression codes rather than treating them as counts --- type: 'test' ... # Subtest: federalRate rejects a missing or zero denominator ok 11 - federalRate rejects a missing or zero denominator --- type: 'test' ... # Subtest: federalRate does not return a rate above 100 ok 12 - federalRate does not return a rate above 100 --- type: 'test' ... # Subtest: integers are written without a decimal point ok 13 - integers are written without a decimal point --- type: 'test' ... # Subtest: int refuses anything that is not a whole number ok 14 - int refuses anything that is not a whole number --- type: 'test' ... # Subtest: reals get a fixed twelve decimal places ok 15 - reals get a fixed twelve decimal places --- type: 'test' ... # Subtest: negative zero is written as zero ok 16 - negative zero is written as zero --- type: 'test' ... # Subtest: a missing value is NA, not an empty cell or a zero ok 17 - a missing value is NA, not an empty cell or a zero --- type: 'test' ... # Subtest: real rejects a non-finite number ok 18 - real rejects a non-finite number --- type: 'test' ... # Subtest: text values may not contain a tab or a newline ok 19 - text values may not contain a tab or a newline --- type: 'test' ... # Subtest: serialize writes a header and a trailing newline ok 20 - serialize writes a header and a trailing newline --- type: 'test' ... # Subtest: serialize sorts by metric then key, in byte order ok 21 - serialize sorts by metric then key, in byte order --- type: 'test' ... # Subtest: serialize refuses two rows with the same metric and key ok 22 - serialize refuses two rows with the same metric and key --- type: 'test' ... # Subtest: metric and key must be plain printable ASCII ok 23 - metric and key must be plain printable ASCII --- type: 'test' ... # Subtest: a value may hold non-ASCII, because values are not sorted on ok 24 - a value may hold non-ASCII, because values are not sorted on --- type: 'test' ... # Subtest: parseContract round-trips what serialize wrote ok 25 - parseContract round-trips what serialize wrote --- type: 'test' ... # Subtest: parseContract rejects a file whose header is not the contract header ok 26 - parseContract rejects a file whose header is not the contract header --- type: 'test' ... # Subtest: parses a plain header + row ok 27 - parses a plain header + row --- type: 'test' ... # Subtest: strips surrounding double quotes ok 28 - strips surrounding double quotes --- type: 'test' ... # Subtest: keeps commas that live inside quoted fields ok 29 - keeps commas that live inside quoted fields --- type: 'test' ... # Subtest: unescapes doubled quotes inside a quoted field ok 30 - unescapes doubled quotes inside a quoted field --- type: 'test' ... # Subtest: handles CRLF line endings ok 31 - handles CRLF line endings --- type: 'test' ... # Subtest: ignores a trailing blank line ok 32 - ignores a trailing blank line --- type: 'test' ... # Subtest: preserves embedded newlines inside quoted fields ok 33 - preserves embedded newlines inside quoted fields --- type: 'test' ... # Subtest: pads short rows with empty strings ok 34 - pads short rows with empty strings --- type: 'test' ... # Subtest: strips a UTF-8 BOM so the first column key is usable ok 35 - strips a UTF-8 BOM so the first column key is usable --- type: 'test' ... # Subtest: strips a BOM that arrived through a latin-1 read ok 36 - strips a BOM that arrived through a latin-1 read --- type: 'test' ... # Subtest: a school is the total row and the Black row, both at sex 99 ok 37 - a school is the total row and the Black row, both at sex 99 --- type: 'test' ... # Subtest: other races are ignored rather than summed ok 38 - other races are ignored rather than summed --- type: 'test' ... # Subtest: a suppressed count is null, never a negative share ok 39 - a suppressed count is null, never a negative share --- type: 'test' ... # Subtest: a school with no total gets no share ok 40 - a school with no total gets no share --- type: 'test' ... # Subtest: a zero enrolment does not divide ok 41 - a zero enrolment does not divide --- type: 'test' ... # Subtest: rows with no school id are skipped ok 42 - rows with no school id are skipped --- type: 'test' ... # Subtest: every NCES id used for a join exists in the committed CCD directory ok 43 - every NCES id used for a join exists in the committed CCD directory --- type: 'test' ... # Subtest: the ids point at the schools they are labelled with ok 44 - the ids point at the schools they are labelled with --- type: 'test' ... # Subtest: Marian Anderson is filed federally under its former name ok 45 - Marian Anderson is filed federally under its former name --- type: 'test' ... # Subtest: every contract has an output from every implementation ok 46 - every contract has an output from every implementation --- type: 'test' ... # Subtest: every contract came out byte-identical across the three implementations ok 47 - every contract came out byte-identical across the three implementations --- type: 'test' ... # Subtest: the three contracts are three different calculations ok 48 - the three contracts are three different calculations --- type: 'test' ... # Subtest: each comparison covers its whole contract, not a handful of rows ok 49 - each comparison covers its whole contract, not a handful of rows --- type: 'test' ... # Subtest: every implementation read the same bytes off disk ok 50 - every implementation read the same bytes off disk --- type: 'test' ... # Subtest: the published equivalence report matches the committed outputs ok 51 - the published equivalence report matches the committed outputs --- type: 'test' ... # Subtest: each knitted R document reports the hash of the file it wrote ok 52 - each knitted R document reports the hash of the file it wrote --- type: 'test' ... # Subtest: re-running the TypeScript emitters reproduces their committed output ok 53 - re-running the TypeScript emitters reproduces their committed output --- type: 'test' ... # Subtest: isAltInstructional matches student and contracted teachers ok 54 - isAltInstructional matches student and contracted teachers --- type: 'test' ... # Subtest: isAltInstructional does not match regular PFT teachers or other staff ok 55 - isAltInstructional does not match regular PFT teachers or other staff --- type: 'test' ... # Subtest: destinations separates transfers, role changes and district exits ok 56 - destinations separates transfers, role changes and district exits --- type: 'test' ... # Subtest: destinations is all zeroes for a school with no teachers ok 57 - destinations is all zeroes for a school with no teachers --- type: 'test' ... # Subtest: eraRetention attributes each transition to whoever held the starting year ok 58 - eraRetention attributes each transition to whoever held the starting year --- type: 'test' ... # Subtest: eraRetention drops a run with no transition starting inside it ok 59 - eraRetention drops a run with no transition starting inside it --- type: 'test' ... # Subtest: a corpus reports where a teacher went and whether they stayed on the payroll ok 60 - a corpus reports where a teacher went and whether they stayed on the payroll --- type: 'test' ... # Subtest: pointInRing separates inside from outside ok 61 - pointInRing separates inside from outside --- type: 'test' ... # Subtest: pointInRing does not double-count a vertex at the test latitude ok 62 - pointInRing does not double-count a vertex at the test latitude --- type: 'test' ... # Subtest: pointInPolygon treats rings after the first as holes ok 63 - pointInPolygon treats rings after the first as holes --- type: 'test' ... # Subtest: featureAt finds the containing feature, Polygon or MultiPolygon ok 64 - featureAt finds the containing feature, Polygon or MultiPolygon --- type: 'test' ... # Subtest: featureAt returns null where no feature covers the point ok 65 - featureAt returns null where no feature covers the point --- type: 'test' ... # Subtest: featuresAt returns every match, so overlapping layers are visible ok 66 - featuresAt returns every match, so overlapping layers are visible --- type: 'test' ... # Subtest: geocoded reads a Census geocoder snapshot ok 67 - geocoded reads a Census geocoder snapshot --- type: 'test' ... # Subtest: geocoded rejects a snapshot with no match rather than guessing ok 68 - geocoded rejects a snapshot with no match rather than guessing --- type: 'test' ... # Subtest: 4914 Pentridge St resolves to the Harrington catchment ok 69 - 4914 Pentridge St resolves to the Harrington catchment --- type: 'test' ... # Subtest: the catchment is read from the committed layer, not asserted ok 70 - the catchment is read from the committed layer, not asserted --- type: 'test' ... # Subtest: the two sides of Grand Army Plaza are zoned to different elementary schools ok 71 - the two sides of Grand Army Plaza are zoned to different elementary schools --- type: 'test' ... # Subtest: PS 11's own building falls inside PS 11's zone ok 72 - PS 11's own building falls inside PS 11's zone --- type: 'test' ... # Subtest: District 13 has no zoned middle school, per the middle-school layer ok 73 - District 13 has no zoned middle school, per the middle-school layer --- type: 'test' ... # Subtest: high school is citywide choice, per the high-school layer ok 74 - high school is citywide choice, per the high-school layer --- type: 'test' ... # Subtest: compressTimeline collapses repeated holders into one run ok 75 - compressTimeline collapses repeated holders into one run --- type: 'test' ... # Subtest: compressTimeline keeps a single-year run ok 76 - compressTimeline keeps a single-year run --- type: 'test' ... # Subtest: compressTimeline returns nothing for an empty timeline ok 77 - compressTimeline returns nothing for an empty timeline --- type: 'test' ... # Subtest: cohortSurvival tracks the base year cohort forward ok 78 - cohortSurvival tracks the base year cohort forward --- type: 'test' ... # Subtest: cohortSurvival reports null shares when the base cohort was empty ok 79 - cohortSurvival reports null shares when the base cohort was empty --- type: 'test' ... # Subtest: peerOrgs keeps same-level buildings above the size floor ok 80 - peerOrgs keeps same-level buildings above the size floor --- type: 'test' ... # Subtest: peerOrgs excludes buildings at a different level ok 81 - peerOrgs excludes buildings at a different level --- type: 'test' ... # Subtest: buildSchoolReport pairs consecutive years and finds the principal ok 82 - buildSchoolReport pairs consecutive years and finds the principal --- type: 'test' ... # Subtest: buildSchoolReport marks years where the school is absent from the extract ok 83 - buildSchoolReport marks years where the school is absent from the extract --- type: 'test' ... # Subtest: employeeKey normalizes case and surrounding whitespace ok 84 - employeeKey normalizes case and surrounding whitespace --- type: 'test' ... # Subtest: employeeKey collapses internal whitespace so "VAN DYKE" matches "VAN DYKE" ok 85 - employeeKey collapses internal whitespace so "VAN DYKE" matches "VAN DYKE" --- type: 'test' ... # Subtest: employeeKey ignores punctuation differences in names ok 86 - employeeKey ignores punctuation differences in names --- type: 'test' ... # Subtest: isTeacher accepts classroom teacher titles ok 87 - isTeacher accepts classroom teacher titles --- type: 'test' ... # Subtest: isTeacher rejects non-teaching staff who merely mention teaching ok 88 - isTeacher rejects non-teaching staff who merely mention teaching --- type: 'test' ... # Subtest: isSchoolLeader matches principals but not assistant principals ok 89 - isSchoolLeader matches principals but not assistant principals --- type: 'test' ... # Subtest: retentionBetween counts staff present in both years ok 90 - retentionBetween counts staff present in both years --- type: 'test' ... # Subtest: retentionBetween reports a null rate when the school had no staff to start ok 91 - retentionBetween reports a null rate when the school had no staff to start --- type: 'test' ... # Subtest: retentionBetween deduplicates people listed twice in one snapshot ok 92 - retentionBetween deduplicates people listed twice in one snapshot --- type: 'test' ... # Subtest: num parses SEDA decimals, including the leading-dot form ok 93 - num parses SEDA decimals, including the leading-dot form --- type: 'test' ... # Subtest: num returns null for blanks and junk rather than NaN ok 94 - num returns null for blanks and junk rather than NaN --- type: 'test' ... # Subtest: percentileOf places a value in a sorted distribution ok 95 - percentileOf places a value in a sorted distribution --- type: 'test' ... # Subtest: percentileOf is null for a missing value or empty distribution ok 96 - percentileOf is null for a missing value or empty distribution --- type: 'test' ... # Subtest: joinSeda pairs achievement with covariates and ranks nationally ok 97 - joinSeda pairs achievement with covariates and ranks nationally --- type: 'test' ... # Subtest: joinSeda drops schools with no achievement estimate ok 98 - joinSeda drops schools with no achievement estimate --- type: 'test' ... # Subtest: joinSeda keeps a school whose growth is missing but level is present ok 99 - joinSeda keeps a school whose growth is missing but level is present --- type: 'test' ... # Subtest: joinSeda applies a label override so schools match the retention names ok 100 - joinSeda applies a label override so schools match the retention names --- type: 'test' ... # Subtest: New York school ids crosswalk to SEDA’s synthetic citywide LEA ok 101 - New York school ids crosswalk to SEDA’s synthetic citywide LEA --- type: 'test' ... # Subtest: the crosswalk refuses anything that is not a twelve-digit NCES id ok 102 - the crosswalk refuses anything that is not a twelve-digit NCES id --- type: 'test' ... # Subtest: median of an odd-length list is the middle value ok 103 - median of an odd-length list is the middle value --- type: 'test' ... # Subtest: median of an even-length list averages the two middle values ok 104 - median of an even-length list averages the two middle values --- type: 'test' ... # Subtest: median of an empty list is null ok 105 - median of an empty list is null --- type: 'test' ... # Subtest: percentileRank reports the share of values at or below the target ok 106 - percentileRank reports the share of values at or below the target --- type: 'test' ... # Subtest: percentileRank is 0 when nothing is at or below the target ok 107 - percentileRank is 0 when nothing is at or below the target --- type: 'test' ... # Subtest: percentileRank of an empty distribution is null ok 108 - percentileRank of an empty distribution is null --- type: 'test' ... # Subtest: pooledRate weights each year by its cohort size, unlike a mean of rates ok 109 - pooledRate weights each year by its cohort size, unlike a mean of rates --- type: 'test' ... # Subtest: pooledRate is null when there is no cohort at all ok 110 - pooledRate is null when there is no cohort at all --- type: 'test' ... # Subtest: ordinal uses st/nd/rd for 1, 2, 3 ok 111 - ordinal uses st/nd/rd for 1, 2, 3 --- type: 'test' ... # Subtest: ordinal uses th for the 11-13 exceptions ok 112 - ordinal uses th for the 11-13 exceptions --- type: 'test' ... # Subtest: ordinal uses th for everything else ok 113 - ordinal uses th for everything else --- type: 'test' ... # Subtest: pearson is +1 for a perfectly increasing relationship ok 114 - pearson is +1 for a perfectly increasing relationship --- type: 'test' ... # Subtest: pearson is -1 for a perfectly inverse relationship ok 115 - pearson is -1 for a perfectly inverse relationship --- type: 'test' ... # Subtest: pearson is null when a variable has no spread ok 116 - pearson is null when a variable has no spread --- type: 'test' ... # Subtest: pearson is null below two points ok 117 - pearson is null below two points --- type: 'test' ... # Subtest: three identical files compare as identical ok 118 - three identical files compare as identical --- type: 'test' ... # Subtest: a numeric difference is reported with its size ok 119 - a numeric difference is reported with its size --- type: 'test' ... # Subtest: a difference in a text value is reported but does not become a number ok 120 - a difference in a text value is reported but does not become a number --- type: 'test' ... # Subtest: a fact missing from one implementation is a difference, not a crash ok 121 - a fact missing from one implementation is a difference, not a crash --- type: 'test' ... # Subtest: NA compares equal to NA and unequal to a number ok 122 - NA compares equal to NA and unequal to a number --- type: 'test' ... # Subtest: comparing fewer than two implementations is refused ok 123 - comparing fewer than two implementations is refused --- type: 'test' ... # Subtest: the report states the verdict, the counts and every hash ok 124 - the report states the verdict, the counts and every hash --- type: 'test' ... # Subtest: the report lists the differing facts when there are any ok 125 - the report lists the differing facts when there are any --- type: 'test' ... # Subtest: the report is the same text every time it is rendered ok 126 - the report is the same text every time it is rendered --- type: 'test' ... # Subtest: each contract gets its own block, named and counted ok 127 - each contract gets its own block, named and counted --- type: 'test' ... # Subtest: one failing contract fails the whole report ok 128 - one failing contract fails the whole report --- type: 'test' ... # Subtest: a section names its contract and its counts ok 129 - a section names its contract and its counts --- type: 'test' ... 1..129 # tests 129 # suites 0 # pass 129 # fail 0 # cancelled 0 # skipped 0 # todo 0