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 15 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.