From 6fcb61cc11cee5155bdac9ef0c54f4c246d75823 Mon Sep 17 00:00:00 2001 From: Stevie Strickland Date: Thu, 18 Feb 2010 23:34:35 +0000 Subject: [PATCH] Add some test cases for super. svn: r18172 --- collects/tests/mzscheme/contract-test.ss | 30 ++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/collects/tests/mzscheme/contract-test.ss b/collects/tests/mzscheme/contract-test.ss index 9983ff7dff..6784b77c8f 100644 --- a/collects/tests/mzscheme/contract-test.ss +++ b/collects/tests/mzscheme/contract-test.ss @@ -4325,6 +4325,36 @@ [d% (class c% (super-new) (define/override (m) (super m 5)))]) (send (new d%) m))) + (test/spec-passed + 'class/c-higher-order-super-1 + '(let* ([c% (contract (class/c [m (-> any/c integer? integer?)] + (super [m (-> any/c number? number?)])) + (class object% (super-new) (define/public (m x) (add1 x))) + 'pos + 'neg)] + [d% (class c% (super-new) (define/override (m x) (+ x (super m 3.5))))]) + (send (new d%) m 4.5))) + + (test/neg-blame + 'class/c-higher-order-super-2 + '(let* ([c% (contract (class/c [m (-> any/c integer? integer?)] + (super [m (-> any/c number? number?)])) + (class object% (super-new) (define/public (m x) (add1 x))) + 'pos + 'neg)] + [d% (class c% (super-new) (define/override (m) (super m #f)))]) + (send (new d%) m))) + + (test/pos-blame + 'class/c-higher-order-super-2 + '(let* ([c% (contract (class/c [m (-> any/c integer? integer?)] + (super [m (-> any/c number? number?)])) + (class object% (super-new) (define/public (m x) (zero? x))) + 'pos + 'neg)] + [d% (class c% (super-new) (define/override (m) (super m 3.5)))]) + (send (new d%) m))) + ; ; ; ;; ;; ; ;;