export const tests = [] const t = (f) => tests.push(f) const check = ({ filterCalls }, eq, a, b) => { const result = eq(a, b) const len = filterCalls.length filterCalls.length = 0 return len ? result : false } t(({ eq, ctx }) => // check that the code did use filter properly check(ctx, eq, filterShortStateName(ctx.arr1), [ 'Alaska', 'Hawaii', 'Idaho', 'Iowa', 'Kansas', 'Maine', 'Nevada', 'Ohio', 'Oregon', 'Texas', 'Utah', ]) ) t(({ eq, ctx }) => // check that the code did use filter properly check(ctx, eq, filterStartVowel(ctx.arr1), [ 'Alabama', 'Alaska', 'Arizona', 'Arkansas', 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Ohio', 'Oklahoma', 'Oregon', 'Utah', ]) ) t(({ eq, ctx }) => // check that the code did use filter properly check(ctx, eq, filter5Vowels(ctx.arr1), [ 'California', 'Louisiana', 'North Carolina', 'South Carolina', 'South Dakota', 'West Virginia', ]) ) t(({ eq, ctx }) => // check that the code did use filter properly check(ctx, eq, filter1DistinctVowel(ctx.arr1), [ 'Alabama', 'Alaska', 'Arkansas', 'Kansas', 'Maryland', 'Mississippi', 'New Jersey', 'Tennessee', ]) ) t(({ eq, ctx }) => // check that the code did use filter properly check(ctx, eq, multiFilter(ctx.arr2), [ { tag: 'CA', name: 'California', capital: 'Sacramento', region: 'West' }, { tag: 'HI', name: 'Hawaii', capital: 'Honolulu', region: 'West' }, { tag: 'MO', name: 'Missouri', capital: 'Jefferson City', region: 'Midwest', }, { tag: 'PA', name: 'Pennsylvania', capital: 'Harrisburg', region: 'Northeast', }, { tag: 'RI', name: 'Rhode Island', capital: 'Providence', region: 'Northeast', }, ]) ) Object.freeze(tests) export const setup = () => { const filterCalls = [] const _filter = Array.prototype.filter Array.prototype.filter = function () { filterCalls.push(this) return _filter.apply(this, arguments) } const arr1 = Object.freeze([ 'Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Connecticut', 'Delaware', 'Florida', 'Georgia', 'Hawaii', 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana', 'Maine', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota', 'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire', 'New Jersey', 'New Mexico', 'New York', 'North Carolina', 'North Dakota', 'Ohio', 'Oklahoma', 'Oregon', 'Pennsylvania', 'Rhode Island', 'South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont', 'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming', ]) const arr2 = Object.freeze( [ { tag: 'AL', name: 'Alabama', capital: 'Montgomery', region: 'South' }, { tag: 'AK', name: 'Alaska', capital: 'Juneau', region: 'West' }, { tag: 'AZ', name: 'Arizona', capital: 'Phoenix', region: 'West' }, { tag: 'AR', name: 'Arkansas', capital: 'Little Rock', region: 'South' }, { tag: 'CA', name: 'California', capital: 'Sacramento', region: 'West' }, { tag: 'CO', name: 'Colorado', capital: 'Denver', region: 'West' }, { tag: 'CT', name: 'Connecticut', capital: 'Hartford', region: 'Northeast', }, { tag: 'DE', name: 'Delaware', capital: 'Dover', region: 'South' }, { tag: 'DC', name: 'District Of Columbia', capital: 'Washington', region: 'South', }, { tag: 'FL', name: 'Florida', capital: 'Tallahassee', region: 'South' }, { tag: 'GA', name: 'Georgia', capital: 'Atlanta', region: 'South' }, { tag: 'HI', name: 'Hawaii', capital: 'Honolulu', region: 'West' }, { tag: 'ID', name: 'Idaho', capital: 'Boise', region: 'West' }, { tag: 'IL', name: 'Illinois', capital: 'Springfield', region: 'Midwest', }, { tag: 'IN', name: 'Indiana', capital: 'Indianapolis', region: 'Midwest', }, { tag: 'IA', name: 'Iowa', capital: 'Des Moines', region: 'Midwest' }, { tag: 'KS', name: 'Kansas', capital: 'Topeka', region: 'Midwest' }, { tag: 'KY', name: 'Kentucky', capital: 'Frankfort', region: 'South' }, { tag: 'LA', name: 'Louisiana', capital: 'Baton Rouge', region: 'South' }, { tag: 'ME', name: 'Maine', capital: 'Augusta', region: 'Northeast' }, { tag: 'MD', name: 'Maryland', capital: 'Annapolis', region: 'South' }, { tag: 'MA', name: 'Massachusetts', capital: 'Boston', region: 'Northeast', }, { tag: 'MI', name: 'Michigan', capital: 'Lansing', region: 'Midwest' }, { tag: 'MN', name: 'Minnesota', capital: 'St. Paul', region: 'Midwest' }, { tag: 'MS', name: 'Mississippi', capital: 'Jackson', region: 'South' }, { tag: 'MO', name: 'Missouri', capital: 'Jefferson City', region: 'Midwest', }, { tag: 'MT', name: 'Montana', capital: 'Helena', region: 'West' }, { tag: 'NE', name: 'Nebraska', capital: 'Lincoln', region: 'Midwest' }, { tag: 'NV', name: 'Nevada', capital: 'Carson City', region: 'West' }, { tag: 'NH', name: 'New Hampshire', capital: 'Concord', region: 'Northeast', }, { tag: 'NJ', name: 'New Jersey', capital: 'Trenton', region: 'Northeast', }, { tag: 'NM', name: 'New Mexico', capital: 'Santa Fe', region: 'West' }, { tag: 'NY', name: 'New York', capital: 'Albany', region: 'Northeast' }, { tag: 'NC', name: 'North Carolina', capital: 'Raleigh', region: 'South', }, { tag: 'ND', name: 'North Dakota', capital: 'Bismarck', region: 'Midwest', }, { tag: 'OH', name: 'Ohio', capital: 'Colombus', region: 'Midwest' }, { tag: 'OK', name: 'Oklahoma', capital: 'Oklahoma City', region: 'South', }, { tag: 'OR', name: 'Oregon', capital: 'Salem', region: 'West' }, { tag: 'PA', name: 'Pennsylvania', capital: 'Harrisburg', region: 'Northeast', }, { tag: 'RI', name: 'Rhode Island', capital: 'Providence', region: 'Northeast', }, { tag: 'SC', name: 'South Carolina', capital: 'Columbia', region: 'South', }, { tag: 'SD', name: 'South Dakota', capital: 'Pierre', region: 'Midwest' }, { tag: 'TN', name: 'Tennessee', capital: 'Nashville', region: 'South' }, { tag: 'TX', name: 'Texas', capital: 'Austin', region: 'South' }, { tag: 'UT', name: 'Utah', capital: 'Salt Lake City', region: 'West' }, { tag: 'VT', name: 'Vermont', capital: 'Montpelier', region: 'Northeast', }, { tag: 'VA', name: 'Virginia', capital: 'Richmond', region: 'South' }, { tag: 'WA', name: 'Washington', capital: 'Olympia', region: 'West' }, { tag: 'WV', name: 'West Virginia', capital: 'Charleston', region: 'South', }, { tag: 'WI', name: 'Wisconsin', capital: 'Madison', region: 'Midwest' }, { tag: 'WY', name: 'Wyoming', capital: 'Cheyenne', region: 'West' }, ].map((e) => Object.freeze(e)) ) return { filterCalls, arr1, arr2 } }