;; The first three lines of this file were inserted by DrRacket. They record metadata
;; about the language level of this file in a form that our tools can easily process.
#reader(lib "htdp-beginner-reader.ss" "lang")((modname 21.4.1) (read-case-sensitive #t) (teachpacks ()) (htdp-settings #(#t constructor repeating-decimal #f #t none #f ())))
; Worked exercise 21.4.1

; An employee has three parts: name, id, and salary.
; The name is a string, while the id and salary are numbers.
(define-struct employee (name id salary))
; make-employee: string(name) number(id) number(salary) -> employee
; employee-name: employee -> string
; employee-id: employee -> number
; employee-salary: employee -> number
; employee? : anything -> boolean

(define emp1 (make-employee "Bob" 470 36000))
(define emp2 (make-employee "Chris" 471 41000))

#|
(check-expect (function-on-employee emp1) ...)
(check-expect (function-on-employee (make-employee "Joe" 348 42995)) ...)

(define (function-on-employee emp)
  ; emp                    an employee
  ; (employee-name emp)    string
  ; (employee-id emp)      number
  ; (employee-salary emp)  number
  ...
  )

(check-expect (function-returning-employee ...) emp1)
(check-expect (function-returning-employee ...)
              (make-employee "Joe" 348 42995))

(define (function-returning-employee ...)
  (make-employee ... ... ...) ; 
  )
|#

; earns-over-100k? : employee -> boolean
(check-expect (earns-over-100k? (make-employee "Phil" 27 119999)) true)
(check-expect (earns-over-100k? (make-employee "Anne" 51 100000)) false)
; borderline case
(check-expect (earns-over-100k? emp1) false)

(define (earns-over-100k? emp)
  ; emp                    an employee
  ; (employee-name emp)    string
  ; (employee-id emp)      number
  ; (employee-salary emp)  number
  (> (employee-salary emp) 100000)
  )
