295 |
((c b a)) |
((c b a)) |
296 |
((z y x))) |
((z y x))) |
297 |
|
|
298 |
|
(deftest defgeneric.9 |
299 |
|
(let ((fn (eval '(defgeneric defgeneric.fun.9 (x &optional y z) |
300 |
|
(:method ((x number) &optional (y 10) (z 20)) |
301 |
|
(list x y z)) |
302 |
|
(:method ((p symbol) &optional (q 's) (r 't)) |
303 |
|
(list r q p)))))) |
304 |
|
(values |
305 |
|
(funcall fn 1) |
306 |
|
(funcall fn 1 2) |
307 |
|
(funcall fn 1 2 3) |
308 |
|
(funcall fn 'a) |
309 |
|
(funcall fn 'a 'b) |
310 |
|
(funcall fn 'a 'b 'c))) |
311 |
|
(1 10 20) |
312 |
|
(1 2 20) |
313 |
|
(1 2 3) |
314 |
|
(t s a) |
315 |
|
(t b a) |
316 |
|
(c b a)) |
317 |
|
|
318 |
|
(deftest defgeneric.10 |
319 |
|
(let ((fn (eval '(defgeneric defgeneric.fun.10 (x &rest y) |
320 |
|
(:method ((x number) &key foo) (list x foo)))))) |
321 |
|
(values |
322 |
|
(funcall fn 1) |
323 |
|
(funcall fn 1 :foo 'a) |
324 |
|
(defgeneric.fun.10 5/3 :foo 'x :foo 'y) |
325 |
|
(defgeneric.fun.10 10 :bar t :allow-other-keys t) |
326 |
|
(defgeneric.fun.10 20 :allow-other-keys nil :foo 'x))) |
327 |
|
(1 nil) |
328 |
|
(1 a) |
329 |
|
(5/3 x) |
330 |
|
(10 nil) |
331 |
|
(20 x)) |
332 |
|
|
333 |
|
(deftest defgeneric.11 |
334 |
|
(let ((fn (eval '(defgeneric defgeneric.fun.11 (x &key) |
335 |
|
(:method ((x number) &key foo) (list x foo)))))) |
336 |
|
(values |
337 |
|
(funcall fn 1) |
338 |
|
(funcall fn 1 :foo 'a) |
339 |
|
(defgeneric.fun.11 5/3 :foo 'x :foo 'y) |
340 |
|
(defgeneric.fun.11 11 :bar t :allow-other-keys t) |
341 |
|
(defgeneric.fun.11 20 :allow-other-keys nil :foo 'x))) |
342 |
|
(1 nil) |
343 |
|
(1 a) |
344 |
|
(5/3 x) |
345 |
|
(11 nil) |
346 |
|
(20 x)) |
347 |
|
|
348 |
|
(deftest defgeneric.12 |
349 |
|
(let ((fn (eval '(defgeneric defgeneric.fun.12 (x &key foo bar baz) |
350 |
|
(:method ((x number) &rest y) (list x y)))))) |
351 |
|
(values |
352 |
|
(funcall fn 1) |
353 |
|
(funcall fn 1 :foo 'a) |
354 |
|
(defgeneric.fun.12 5/3 :foo 'x :foo 'y :bar 'z) |
355 |
|
(defgeneric.fun.12 11 :zzz t :allow-other-keys t) |
356 |
|
(defgeneric.fun.12 20 :allow-other-keys nil :foo 'x))) |
357 |
|
(1 nil) |
358 |
|
(1 (:foo a)) |
359 |
|
(5/3 (:foo x :foo y :bar z)) |
360 |
|
(11 (:zzz t :allow-other-keys t)) |
361 |
|
(20 (:allow-other-keys nil :foo x))) |
362 |
|
|
363 |
|
(deftest defgeneric.13 |
364 |
|
(let ((fn (eval '(defgeneric defgeneric.fun.13 (x &key) |
365 |
|
(:method ((x number) &key foo) (list x foo)) |
366 |
|
(:method ((x symbol) &key bar) (list x bar)))))) |
367 |
|
(values |
368 |
|
(funcall fn 1) |
369 |
|
(funcall fn 'a) |
370 |
|
(funcall fn 1 :foo 2) |
371 |
|
(funcall fn 1 :foo 2 :bar 3) |
372 |
|
(funcall fn 1 :bar 4) |
373 |
|
(funcall fn 'a :foo 'b) |
374 |
|
(funcall fn 'a :bar 'b) |
375 |
|
(funcall fn 'a :foo 'c :bar 'b))) |
376 |
|
(1 nil) |
377 |
|
(a nil) |
378 |
|
(1 2) |
379 |
|
(1 2) |
380 |
|
(1 nil) |
381 |
|
(a nil) |
382 |
|
(a b) |
383 |
|
(a b)) |
384 |
|
|
385 |
|
(deftest defgeneric.14 |
386 |
|
(let ((fn (eval '(defgeneric defgeneric.fun.14 (x &key &allow-other-keys) |
387 |
|
(:method ((x number) &key foo) (list x foo)) |
388 |
|
(:method ((x symbol) &key bar) (list x bar)))))) |
389 |
|
(values |
390 |
|
(funcall fn 1) |
391 |
|
(funcall fn 'a) |
392 |
|
(funcall fn 1 :foo 2) |
393 |
|
(funcall fn 1 :foo 2 :bar 3) |
394 |
|
(funcall fn 1 :bar 4) |
395 |
|
(funcall fn 'a :foo 'b) |
396 |
|
(funcall fn 'a :bar 'b) |
397 |
|
(funcall fn 'a :foo 'c :bar 'b) |
398 |
|
(funcall fn 1 :baz 10) |
399 |
|
(funcall fn 'a :baz 10) |
400 |
|
(funcall fn 1 :allow-other-keys nil :baz 'a) |
401 |
|
(funcall fn 'a :allow-other-keys nil :baz 'b) |
402 |
|
)) |
403 |
|
(1 nil) |
404 |
|
(a nil) |
405 |
|
(1 2) |
406 |
|
(1 2) |
407 |
|
(1 nil) |
408 |
|
(a nil) |
409 |
|
(a b) |
410 |
|
(a b) |
411 |
|
(1 nil) |
412 |
|
(a nil) |
413 |
|
(1 nil) |
414 |
|
(a nil)) |
415 |
|
|
416 |
|
|