Functional Problem Solving (CSC 151 2014S) : EBoards
Primary: [Front Door] [Schedule] - [Academic Honesty] [Disabilities] [Email] - [FAQ] [Teaching & Learning] [Grading] [Rubric] - [Calendar]
Current: [Assignment] [EBoard] [Lab] [Outline] [Partners] [Reading]
Sections: [Assignments] [EBoards] [Examples] [Handouts] [Labs] [Outlines] [Partners] [Readings]
Reference: [Setup] - [Functions A-Z] [Functions By Topic] - [Racket] [Scheme Report (R5RS)] [R6RS] [TSPL4]
Related Courses: [Davis (2013F)] [Rebelsky (2010S)] [Rebelsky (2013F)] [Weinman (2012F)] [Weinman (2014S)]
Misc: [SamR] [Glimmer Labs] [CS@Grinnell] [Grinnell] [Issue Tracker (Course)]
Overview
Here's one group's set of tests, just fo isosceles triangles
(test-case "unit side length isosceles triangle"
(check-equal? (classify-triangle 1 2 2) "isosceles")
(check-equal? (classify-triangle 2 1 2) "isosceles")
(check-equal? (classify-triangle 2 2 1) "isosceles")
(check-equal? (classify-triangle 1 3 3) "isosceles")
(check-equal? (classify-triangle 3 1 3) "isosceles")
(check-equal? (classify-triangle 3 3 1) "isosceles")
(check-equal? (classify-triangle 1 4 4) "isosceles")
(check-equal? (classify-triangle 4 1 4) "isosceles")
(check-equal? (classify-triangle 4 4 1) "isosceles")
(check-equal? (classify-triangle 1 5 5) "isosceles")
(check-equal? (classify-triangle 5 1 5) "isosceles")
(check-equal? (classify-triangle 5 5 1) "isosceles")
(check-equal? (classify-triangle 1 6 6) "isosceles")
(check-equal? (classify-triangle 6 1 6) "isosceles")
(check-equal? (classify-triangle 6 6 1) "isosceles")
(check-equal? (classify-triangle 1 7 7) "isosceles")
(check-equal? (classify-triangle 7 1 7) "isosceles")
(check-equal? (classify-triangle 7 7 1) "isosceles")
(check-equal? (classify-triangle 1 8 8) "isosceles")
(check-equal? (classify-triangle 8 1 8) "isosceles")
(check-equal? (classify-triangle 8 8 1) "isosceles")
(check-equal? (classify-triangle 1 9 9) "isosceles")
(check-equal? (classify-triangle 9 1 9) "isosceles")
(check-equal? (classify-triangle 9 9 1) "isosceles")
(check-equal? (classify-triangle 1 10 10) "isosceles")
(check-equal? (classify-triangle 10 1 10) "isosceles")
(check-equal? (classify-triangle 10 10 1) "isosceles")
(check-equal? (classify-triangle 2 3 3) "isosceles")
(check-equal? (classify-triangle 3 2 3) "isosceles")
(check-equal? (classify-triangle 3 3 2) "isosceles")
(check-equal? (classify-triangle 2 4 4) "isosceles")
(check-equal? (classify-triangle 4 2 4) "isosceles")
(check-equal? (classify-triangle 4 4 2) "isosceles")
(check-equal? (classify-triangle 2 5 5) "isosceles")
(check-equal? (classify-triangle 5 2 5) "isosceles")
(check-equal? (classify-triangle 5 5 2) "isosceles")
(check-equal? (classify-triangle 2 6 6) "isosceles")
(check-equal? (classify-triangle 6 2 6) "isosceles")
(check-equal? (classify-triangle 6 6 2) "isosceles")
(check-equal? (classify-triangle 2 7 7) "isosceles")
(check-equal? (classify-triangle 7 2 7) "isosceles")
(check-equal? (classify-triangle 7 7 2) "isosceles")
(check-equal? (classify-triangle 2 8 8) "isosceles")
(check-equal? (classify-triangle 8 2 8) "isosceles")
(check-equal? (classify-triangle 8 8 2) "isosceles")
(check-equal? (classify-triangle 2 9 9) "isosceles")
(check-equal? (classify-triangle 9 2 9) "isosceles")
(check-equal? (classify-triangle 9 9 2) "isosceles")
(check-equal? (classify-triangle 2 10 10) "isosceles")
(check-equal? (classify-triangle 10 2 10) "isosceles")
(check-equal? (classify-triangle 10 10 2) "isosceles")
(check-equal? (classify-triangle 3 2 2) "isosceles")
(check-equal? (classify-triangle 2 3 2) "isosceles")
(check-equal? (classify-triangle 2 2 3) "isosceles")
(check-equal? (classify-triangle 3 4 4) "isosceles")
(check-equal? (classify-triangle 4 3 4) "isosceles")
(check-equal? (classify-triangle 4 4 3) "isosceles")
(check-equal? (classify-triangle 3 5 5) "isosceles")
(check-equal? (classify-triangle 5 3 5) "isosceles")
(check-equal? (classify-triangle 5 5 3) "isosceles")
(check-equal? (classify-triangle 3 6 6) "isosceles")
(check-equal? (classify-triangle 6 3 6) "isosceles")
(check-equal? (classify-triangle 6 6 3) "isosceles")
(check-equal? (classify-triangle 3 7 7) "isosceles")
(check-equal? (classify-triangle 7 3 7) "isosceles")
(check-equal? (classify-triangle 7 7 3) "isosceles")
(check-equal? (classify-triangle 3 8 8) "isosceles")
(check-equal? (classify-triangle 8 3 8) "isosceles")
(check-equal? (classify-triangle 8 8 3) "isosceles")
(check-equal? (classify-triangle 3 9 9) "isosceles")
(check-equal? (classify-triangle 9 3 9) "isosceles")
(check-equal? (classify-triangle 9 9 3) "isosceles")
(check-equal? (classify-triangle 3 10 10) "isosceles")
(check-equal? (classify-triangle 10 3 10) "isosceles")
(check-equal? (classify-triangle 10 10 3) "isosceles")
(check-equal? (classify-triangle 4 3 3) "isosceles")
(check-equal? (classify-triangle 3 4 3) "isosceles")
(check-equal? (classify-triangle 3 3 4) "isosceles")
(check-equal? (classify-triangle 4 5 5) "isosceles")
(check-equal? (classify-triangle 5 4 5) "isosceles")
(check-equal? (classify-triangle 5 5 4) "isosceles")
(check-equal? (classify-triangle 4 6 6) "isosceles")
(check-equal? (classify-triangle 6 4 6) "isosceles")
(check-equal? (classify-triangle 6 6 4) "isosceles")
(check-equal? (classify-triangle 4 7 7) "isosceles")
(check-equal? (classify-triangle 7 4 7) "isosceles")
(check-equal? (classify-triangle 7 7 4) "isosceles")
(check-equal? (classify-triangle 4 8 8) "isosceles")
(check-equal? (classify-triangle 8 4 8) "isosceles")
(check-equal? (classify-triangle 8 8 4) "isosceles")
(check-equal? (classify-triangle 4 9 9) "isosceles")
(check-equal? (classify-triangle 9 4 9) "isosceles")
(check-equal? (classify-triangle 9 9 4) "isosceles")
(check-equal? (classify-triangle 4 10 10) "isosceles")
(check-equal? (classify-triangle 10 4 10) "isosceles")
(check-equal? (classify-triangle 10 10 4) "isosceles")
(check-equal? (classify-triangle 5 3 3) "isosceles")
(check-equal? (classify-triangle 3 5 3) "isosceles")
(check-equal? (classify-triangle 3 3 5) "isosceles")
(check-equal? (classify-triangle 5 4 4) "isosceles")
(check-equal? (classify-triangle 4 5 4) "isosceles")
(check-equal? (classify-triangle 4 4 5) "isosceles")
(check-equal? (classify-triangle 5 6 6) "isosceles")
(check-equal? (classify-triangle 6 5 6) "isosceles")
(check-equal? (classify-triangle 6 6 5) "isosceles")
(check-equal? (classify-triangle 5 7 7) "isosceles")
(check-equal? (classify-triangle 7 5 7) "isosceles")
(check-equal? (classify-triangle 7 7 5) "isosceles")
(check-equal? (classify-triangle 5 8 8) "isosceles")
(check-equal? (classify-triangle 8 5 8) "isosceles")
(check-equal? (classify-triangle 8 8 5) "isosceles")
(check-equal? (classify-triangle 5 9 9) "isosceles")
(check-equal? (classify-triangle 9 5 9) "isosceles")
(check-equal? (classify-triangle 9 9 5) "isosceles")
(check-equal? (classify-triangle 5 10 10) "isosceles")
(check-equal? (classify-triangle 10 5 10) "isosceles")
(check-equal? (classify-triangle 10 10 5) "isosceles")
(check-equal? (classify-triangle 6 4 4) "isosceles")
(check-equal? (classify-triangle 4 6 4) "isosceles")
(check-equal? (classify-triangle 4 4 6) "isosceles")
(check-equal? (classify-triangle 6 5 5) "isosceles")
(check-equal? (classify-triangle 5 6 5) "isosceles")
(check-equal? (classify-triangle 5 5 6) "isosceles")
(check-equal? (classify-triangle 6 7 7) "isosceles")
(check-equal? (classify-triangle 7 6 7) "isosceles")
(check-equal? (classify-triangle 7 7 6) "isosceles")
(check-equal? (classify-triangle 6 8 8) "isosceles")
(check-equal? (classify-triangle 8 6 8) "isosceles")
(check-equal? (classify-triangle 8 8 6) "isosceles")
(check-equal? (classify-triangle 6 9 9) "isosceles")
(check-equal? (classify-triangle 9 6 9) "isosceles")
(check-equal? (classify-triangle 9 9 6) "isosceles")
(check-equal? (classify-triangle 6 10 10) "isosceles")
(check-equal? (classify-triangle 10 6 10) "isosceles")
(check-equal? (classify-triangle 10 10 6) "isosceles")
(check-equal? (classify-triangle 7 4 4) "isosceles")
(check-equal? (classify-triangle 4 7 4) "isosceles")
(check-equal? (classify-triangle 4 4 7) "isosceles")
(check-equal? (classify-triangle 7 5 5) "isosceles")
(check-equal? (classify-triangle 5 7 5) "isosceles")
(check-equal? (classify-triangle 5 5 7) "isosceles")
(check-equal? (classify-triangle 7 6 6) "isosceles")
(check-equal? (classify-triangle 6 7 6) "isosceles")
(check-equal? (classify-triangle 6 6 7) "isosceles")
(check-equal? (classify-triangle 7 8 8) "isosceles")
(check-equal? (classify-triangle 8 7 8) "isosceles")
(check-equal? (classify-triangle 8 8 7) "isosceles")
(check-equal? (classify-triangle 7 9 9) "isosceles")
(check-equal? (classify-triangle 9 7 9) "isosceles")
(check-equal? (classify-triangle 9 9 7) "isosceles")
(check-equal? (classify-triangle 7 10 10) "isosceles")
(check-equal? (classify-triangle 10 7 10) "isosceles")
(check-equal? (classify-triangle 10 10 7) "isosceles")
(check-equal? (classify-triangle 8 5 5) "isosceles")
(check-equal? (classify-triangle 5 8 5) "isosceles")
(check-equal? (classify-triangle 5 5 8) "isosceles")
(check-equal? (classify-triangle 8 6 6) "isosceles")
(check-equal? (classify-triangle 6 8 6) "isosceles")
(check-equal? (classify-triangle 6 6 8) "isosceles")
(check-equal? (classify-triangle 8 7 7) "isosceles")
(check-equal? (classify-triangle 7 8 7) "isosceles")
(check-equal? (classify-triangle 7 7 8) "isosceles")
(check-equal? (classify-triangle 8 9 9) "isosceles")
(check-equal? (classify-triangle 9 8 9) "isosceles")
(check-equal? (classify-triangle 9 9 8) "isosceles")
(check-equal? (classify-triangle 8 10 10) "isosceles")
(check-equal? (classify-triangle 10 8 10) "isosceles")
(check-equal? (classify-triangle 10 10 8) "isosceles")
(check-equal? (classify-triangle 9 5 5) "isosceles")
(check-equal? (classify-triangle 5 9 5) "isosceles")
(check-equal? (classify-triangle 5 5 9) "isosceles")
(check-equal? (classify-triangle 9 6 6) "isosceles")
(check-equal? (classify-triangle 6 9 6) "isosceles")
(check-equal? (classify-triangle 6 6 9) "isosceles")
(check-equal? (classify-triangle 9 7 7) "isosceles")
(check-equal? (classify-triangle 7 9 7) "isosceles")
(check-equal? (classify-triangle 7 7 9) "isosceles")
(check-equal? (classify-triangle 9 8 8 ) "isosceles")
(check-equal? (classify-triangle 8 9 8) "isosceles")
(check-equal? (classify-triangle 8 8 9) "isosceles")
(check-equal? (classify-triangle 9 10 10) "isosceles")
(check-equal? (classify-triangle 10 9 10) "isosceles")
(check-equal? (classify-triangle 10 10 9) "isosceles")
(check-equal? (classify-triangle 10 6 6) "isosceles")
(check-equal? (classify-triangle 6 10 6) "isosceles")
(check-equal? (classify-triangle 6 6 10) "isosceles")
(check-equal? (classify-triangle 10 7 7) "isosceles")
(check-equal? (classify-triangle 7 10 7) "isosceles")
(check-equal? (classify-triangle 7 7 10) "isosceles")
(check-equal? (classify-triangle 10 8 8 ) "isosceles")
(check-equal? (classify-triangle 8 10 8) "isosceles")
(check-equal? (classify-triangle 8 8 10) "isosceles")
(check-equal? (classify-triangle 10 9 9 ) "isosceles")
(check-equal? (classify-triangle 9 10 9) "isosceles")
(check-equal? (classify-triangle 9 9 10) "isosceles"))
What could that group have done better?
That group could have tried at least one non-integer side length.
That group could have noted that their code is insanely repetitious and written a helper like the following.
(define check-issoc
(lambda (same diff)
(check-equal? (classify-triangle same same diff) "isosceles")
(check-equal? (classify-triangle same diff same) "isosceles")
(check-equal? (classify-triangle diff same same) "isosceles")))
On a separate note, over the long term, you want your tests to not only tell you that there is an error, but to help you identify the error. So coming up with useful names for your tests is always a good idea.
Sam attempted to discuss images from a deck by Matt Kluber.
Primary: [Front Door] [Schedule] - [Academic Honesty] [Disabilities] [Email] - [FAQ] [Teaching & Learning] [Grading] [Rubric] - [Calendar]
Current: [Assignment] [EBoard] [Lab] [Outline] [Partners] [Reading]
Sections: [Assignments] [EBoards] [Examples] [Handouts] [Labs] [Outlines] [Partners] [Readings]
Reference: [Setup] - [Functions A-Z] [Functions By Topic] - [Racket] [Scheme Report (R5RS)] [R6RS] [TSPL4]
Related Courses: [Davis (2013F)] [Rebelsky (2010S)] [Rebelsky (2013F)] [Weinman (2012F)] [Weinman (2014S)]
Misc: [SamR] [Glimmer Labs] [CS@Grinnell] [Grinnell] [Issue Tracker (Course)]
Samuel A. Rebelsky, rebelsky@grinnell.edu
Copyright (c) 2007-2014 Janet Davis, Samuel A. Rebelsky, and Jerod Weinman. (Selected materials are copyright by John David Stone or Henry Walker and are used with permission.)

This work is licensed under a Creative Commons Attribution 3.0 Unported License. To view a copy of this
license, visit http://creativecommons.org/licenses/by-nc/3.0/
or send a letter to Creative Commons, 543 Howard Street, 5th Floor,
San Francisco, California, 94105, USA.