Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
89 changes: 46 additions & 43 deletions exercises/practice/bob/.meta/tests.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,82 +9,85 @@
# As user-added comments (using the # character) will be removed when this file
# is regenerated, comments can be added via a `comment` key.

[e162fead-606f-437a-a166-d051915cea8e]
description = "stating something"
[8a2e771d-d6f1-4e3f-b6c6-b41495556e37]
description = "asking a question"

[73a966dc-8017-47d6-bb32-cf07d1a5fcd9]
description = "shouting"

[d6c98afd-df35-4806-b55e-2c457c3ab748]
description = "shouting gibberish"
[a5193c61-4a92-4f68-93e2-f554eb385ec6]
description = "forceful question"

[8a2e771d-d6f1-4e3f-b6c6-b41495556e37]
description = "asking a question"
[bc39f7c6-f543-41be-9a43-fd1c2f753fc0]
description = "silence"

[e162fead-606f-437a-a166-d051915cea8e]
description = "stating something"

[81080c62-4e4d-4066-b30a-48d8d76920d9]
description = "asking a numeric question"

[2a02716d-685b-4e2e-a804-2adaf281c01e]
description = "asking gibberish"

[c02f9179-ab16-4aa7-a8dc-940145c385f7]
description = "talking forcefully"
[bb0011c5-cd52-4a5b-8bfb-a87b6283b0e2]
description = "question with no letters"

[153c0e25-9bb5-4ec5-966e-598463658bcd]
description = "using acronyms in regular speech"
[9bfc677d-ea3a-45f2-be44-35bc8fa3753e]
description = "non-letters with question"

[a5193c61-4a92-4f68-93e2-f554eb385ec6]
description = "forceful question"
[8608c508-f7de-4b17-985b-811878b3cf45]
description = "prattling on"

[a20e0c54-2224-4dde-8b10-bd2cdd4f61bc]
description = "shouting numbers"
[05b304d6-f83b-46e7-81e0-4cd3ca647900]
description = "ending with whitespace"

[f7bc4b92-bdff-421e-a238-ae97f230ccac]
description = "no letters"
[66953780-165b-4e7e-8ce3-4bcb80b6385a]
description = "multiple line question"
include = false

[bb0011c5-cd52-4a5b-8bfb-a87b6283b0e2]
description = "question with no letters"
[2c7278ac-f955-4eb4-bf8f-e33eb4116a15]
description = "multiple line question"
reimplements = "66953780-165b-4e7e-8ce3-4bcb80b6385a"

[d6c98afd-df35-4806-b55e-2c457c3ab748]
description = "shouting gibberish"

[3c954328-86fb-4c71-8961-e18d6a5e2517]
description = "shouting a statement containing a question mark"

[a20e0c54-2224-4dde-8b10-bd2cdd4f61bc]
description = "shouting numbers"

[496143c8-1c31-4c01-8a08-88427af85c66]
description = "shouting with special characters"

[e6793c1c-43bd-4b8d-bc11-499aea73925f]
description = "shouting with no exclamation mark"

[aa8097cc-c548-4951-8856-14a404dd236a]
description = "statement containing question mark"

[9bfc677d-ea3a-45f2-be44-35bc8fa3753e]
description = "non-letters with question"

[8608c508-f7de-4b17-985b-811878b3cf45]
description = "prattling on"

[bc39f7c6-f543-41be-9a43-fd1c2f753fc0]
description = "silence"

[d6c47565-372b-4b09-b1dd-c40552b8378b]
description = "prolonged silence"

[4428f28d-4100-4d85-a902-e5a78cb0ecd3]
description = "alternate silence"

[66953780-165b-4e7e-8ce3-4bcb80b6385a]
description = "multiple line question"
include = false
[72bd5ad3-9b2f-4931-a988-dce1f5771de2]
description = "other whitespace"

[5371ef75-d9ea-4103-bcfa-2da973ddec1b]
description = "starting with whitespace"
[c02f9179-ab16-4aa7-a8dc-940145c385f7]
description = "talking forcefully"

[05b304d6-f83b-46e7-81e0-4cd3ca647900]
description = "ending with whitespace"
[153c0e25-9bb5-4ec5-966e-598463658bcd]
description = "using acronyms in regular speech"

[72bd5ad3-9b2f-4931-a988-dce1f5771de2]
description = "other whitespace"
[f7bc4b92-bdff-421e-a238-ae97f230ccac]
description = "no letters"

[aa8097cc-c548-4951-8856-14a404dd236a]
description = "statement containing question mark"

[5371ef75-d9ea-4103-bcfa-2da973ddec1b]
description = "starting with whitespace"

[12983553-8601-46a8-92fa-fcaa3bc4a2a0]
description = "non-question ending with whitespace"

[2c7278ac-f955-4eb4-bf8f-e33eb4116a15]
description = "multiple line question"
reimplements = "66953780-165b-4e7e-8ce3-4bcb80b6385a"
119 changes: 62 additions & 57 deletions exercises/practice/bob/bob.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,29 @@ import { describe, expect, test, xtest } from '@jest/globals';
import { hey } from './bob';

describe('Bob', () => {
test('stating something', () => {
const result = hey('Tom-ay-to, tom-aaaah-to.');
expect(result).toEqual('Whatever.');
test('asking a question', () => {
const result = hey('Does this cryogenic chamber make me look fat?');
expect(result).toEqual('Sure.');
});

xtest('shouting', () => {
const result = hey('WATCH OUT!');
expect(result).toEqual('Whoa, chill out!');
});

xtest('shouting gibberish', () => {
const result = hey('FCECDFCAAB');
expect(result).toEqual('Whoa, chill out!');
xtest('forceful question', () => {
const result = hey('WHAT THE HELL WERE YOU THINKING?');
expect(result).toEqual("Calm down, I know what I'm doing!");
});

xtest('asking a question', () => {
const result = hey('Does this cryogenic chamber make me look fat?');
expect(result).toEqual('Sure.');
xtest('silence', () => {
const result = hey('');
expect(result).toEqual('Fine. Be that way!');
});

xtest('stating something', () => {
const result = hey('Tom-ay-to, tom-aaaah-to.');
expect(result).toEqual('Whatever.');
});

xtest('asking a numeric question', () => {
Expand All @@ -32,64 +37,54 @@ describe('Bob', () => {
expect(result).toEqual('Sure.');
});

xtest('talking forcefully', () => {
const result = hey("Let's go make out behind the gym!");
expect(result).toEqual('Whatever.');
});

xtest('using acronyms in regular speech', () => {
const result = hey("It's OK if you don't want to go to the DMV.");
expect(result).toEqual('Whatever.');
xtest('question with no letters', () => {
const result = hey('4?');
expect(result).toEqual('Sure.');
});

xtest('forceful question', () => {
const result = hey('WHAT THE HELL WERE YOU THINKING?');
expect(result).toEqual("Calm down, I know what I'm doing!");
xtest('non-letters with question', () => {
const result = hey(':) ?');
expect(result).toEqual('Sure.');
});

xtest('shouting numbers', () => {
const result = hey('1, 2, 3 GO!');
expect(result).toEqual('Whoa, chill out!');
xtest('prattling on', () => {
const result = hey('Wait! Hang on. Are you going to be OK?');
expect(result).toEqual('Sure.');
});

xtest('no letters', () => {
const result = hey('1, 2, 3');
expect(result).toEqual('Whatever.');
xtest('ending with whitespace', () => {
const result = hey('Okay if like my spacebar quite a bit? ');
expect(result).toEqual('Sure.');
});

xtest('question with no letters', () => {
const result = hey('4?');
xtest('multiple line question', () => {
const result = hey('\nDoes this cryogenic chamber make\n me look fat?');
expect(result).toEqual('Sure.');
});

xtest('shouting with special characters', () => {
const result = hey('ZOMG THE %^*@#$(*^ ZOMBIES ARE COMING!!11!!1!');
xtest('shouting gibberish', () => {
const result = hey('FCECDFCAAB');
expect(result).toEqual('Whoa, chill out!');
});

xtest('shouting with no exclamation mark', () => {
const result = hey('I HATE YOU');
xtest('shouting a statement containing a question mark', () => {
const result = hey('DO LIONS EAT PEOPLE? AHHHHH.');
expect(result).toEqual('Whoa, chill out!');
});

xtest('statement containing question mark', () => {
const result = hey('Ending with a ? means a question.');
expect(result).toEqual('Whatever.');
});

xtest('non-letters with question', () => {
const result = hey(':) ?');
expect(result).toEqual('Sure.');
xtest('shouting numbers', () => {
const result = hey('1, 2, 3 GO!');
expect(result).toEqual('Whoa, chill out!');
});

xtest('prattling on', () => {
const result = hey('Wait! Hang on. Are you going to be OK?');
expect(result).toEqual('Sure.');
xtest('shouting with special characters', () => {
const result = hey('ZOMG THE %^*@#$(*^ ZOMBIES ARE COMING!!11!!1!');
expect(result).toEqual('Whoa, chill out!');
});

xtest('silence', () => {
const result = hey('');
expect(result).toEqual('Fine. Be that way!');
xtest('shouting with no exclamation mark', () => {
const result = hey('I HATE YOU');
expect(result).toEqual('Whoa, chill out!');
});

xtest('prolonged silence', () => {
Expand All @@ -102,24 +97,34 @@ describe('Bob', () => {
expect(result).toEqual('Fine. Be that way!');
});

xtest('multiple line question', () => {
const result = hey('\nDoes this cryogenic chamber make\n me look fat?');
expect(result).toEqual('Sure.');
xtest('other whitespace', () => {
const result = hey('\n\r \t');
expect(result).toEqual('Fine. Be that way!');
});

xtest('starting with whitespace', () => {
const result = hey(' hmmmmmmm...');
xtest('talking forcefully', () => {
const result = hey("Let's go make out behind the gym!");
expect(result).toEqual('Whatever.');
});

xtest('ending with whitespace', () => {
const result = hey('Okay if like my spacebar quite a bit? ');
expect(result).toEqual('Sure.');
xtest('using acronyms in regular speech', () => {
const result = hey("It's OK if you don't want to go to the DMV.");
expect(result).toEqual('Whatever.');
});

xtest('other whitespace', () => {
const result = hey('\n\r \t');
expect(result).toEqual('Fine. Be that way!');
xtest('no letters', () => {
const result = hey('1, 2, 3');
expect(result).toEqual('Whatever.');
});

xtest('statement containing question mark', () => {
const result = hey('Ending with a ? means a question.');
expect(result).toEqual('Whatever.');
});

xtest('starting with whitespace', () => {
const result = hey(' hmmmmmmm...');
expect(result).toEqual('Whatever.');
});

xtest('non-question ending with whitespace', () => {
Expand Down
19 changes: 16 additions & 3 deletions exercises/practice/connect/.meta/tests.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
# This is an auto-generated file. Regular comments will be removed when this
# file is regenerated. Regenerating will not touch any manually added keys,
# so comments can be added in a "comment" key.
# This is an auto-generated file.
#
# Regenerating this file via `configlet sync` will:
# - Recreate every `description` key/value pair
# - Recreate every `reimplements` key/value pair, where they exist in problem-specifications
# - Remove any `include = true` key/value pair (an omitted `include` key implies inclusion)
# - Preserve any other key/value pair
#
# As user-added comments (using the # character) will be removed when this file
# is regenerated, comments can be added via a `comment` key.

[6eff0df4-3e92-478d-9b54-d3e8b354db56]
description = "an empty board has no winner"
Expand All @@ -23,6 +30,12 @@ description = "nobody wins crossing adjacent angles"
[cd61c143-92f6-4a8d-84d9-cb2b359e226b]
description = "X wins crossing from left to right"

[495e33ed-30a9-4012-b46e-d7c4d5fe13c3]
description = "X wins with left-hand dead end fork"

[ab167ab0-4a98-4d0f-a1c0-e1cddddc3d58]
description = "X wins with right-hand dead end fork"

[73d1eda6-16ab-4460-9904-b5f5dd401d0b]
description = "O wins crossing from top to bottom"

Expand Down
10 changes: 10 additions & 0 deletions exercises/practice/connect/connect.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,16 @@ describe('Judging a game of connect', () => {
expect(new Board(board).winner()).toEqual('X');
});

xtest('X wins with left-hand dead end fork', () => {
const board = ['. . X .', ' X X . .', ' . X X X', ' O O O O'];
expect(new Board(board).winner()).toEqual('X');
});

xtest('X wins with right-hand dead end fork', () => {
const board = ['. . X X', ' X X . .', ' . X X .', ' O O O O'];
expect(new Board(board).winner()).toEqual('X');
});

xtest('O wins crossing from top to bottom', () => {
const board = [
'. O . .',
Expand Down
18 changes: 18 additions & 0 deletions exercises/practice/line-up/.meta/tests.toml
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,24 @@ description = "format non-exceptional ordinal numeral 13"
[2bdcebc5-c029-4874-b6cc-e9bec80d603a]
description = "format exceptional ordinal numeral 21"

[a98e2e22-ab41-4557-a7c2-efedc19c16da]
description = "format exceptional ordinal numeral 22 ending in nd even though it is a multiple of 11"

[ab45d2fb-e0ee-4016-b605-76917584db0a]
description = "format exceptional ordinal numeral 33 ending in rd even though it is a multiple of 11"

[c9243603-9f17-45b3-9a41-db9ebdbf08e1]
description = "format exceptional ordinal numeral 52 ending in nd even though it is a multiple of 13"

[74ee2317-0295-49d2-baf0-d56bcefa14e3]
description = "format exceptional ordinal numeral 62"

[3f6c408c-4331-42b6-bb6c-3ad0823e568a]
description = "format non-exceptional ordinal numeral 72 ending in nd even though it is a multiple of 12"

[8db52cd9-9689-413f-a812-6c36fcfd0d07]
description = "format exceptional ordinal numeral 91 ending in st even though it is a multiple of 13"

[b37c332d-7f68-40e3-8503-e43cbd67a0c4]
description = "format exceptional ordinal numeral 100"

Expand All @@ -65,3 +80,6 @@ description = "format non-exceptional ordinal numeral 112"

[06b62efe-199e-4ce7-970d-4bf73945713f]
description = "format exceptional ordinal numeral 123"

[6792c54e-59a7-4faf-839a-c4bb61014229]
description = "format large number 972 ending in nd even though it is a multiple of 12"
Loading