Skip to main content
← ⚑ JavaScript & the browserΒ·Module C8 Β· Lesson 10
TaskCombine the runner from C8-05 (with describe) and assertEqual from C8-09. Implement createSortedSet() with .add, .has, .size, .toArray. Inside describe('sortedSet'), write three tests: 'starts empty', 'add then has', 'dedupes and sorts' (assertDeepEqual after adding 3,1,3,2 the toArray() is [1,2,3]). runAll() β€” all 3 pass.

Capstone: test a small library

275 XP15 min
Theory

Putting C8 together

Combine every C8 idea to test a real micro-library β€” a sorted, dedup'd integer set. You'll write the library AND the tests for it in one file.

function createSortedSet() {
  const items = [];
  return {
    add(x)    { if (!items.includes(x)) items.push(x); items.sort((a,b) => a - b); },
    has(x)    { return items.includes(x); },
    size()    { return items.length; },
    toArray() { return items.slice(); },
  };
}

The capstone wires C8-05 runner + C8-09 better assertEqual, then writes a small suite that covers happy path, dedup, and ordering.

Why testing a library is the natural exercise

Libraries have clear inputs and outputs β€” perfect for tests. Plus you're going to write libraries throughout your career; learning to test them well is a permanent skill.

πŸ”’

Sign up to start coding

Theory is open to everyone. The interactive editor, live preview, and check are unlocked with a 7-day free trial β€” card required, cancel anytime.

Sign up β€” free trial β†’

First 10 lessons in each track are free. No card needed for those.

← PreviousNext lesson β†’

Get one Python or web tip a day β€” by email

Short, hand-written, no spam. Unsubscribe in one click.