File: introspection.test

package info (click to toggle)
nsf 2.4.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 13,208 kB
  • sloc: ansic: 32,687; tcl: 10,723; sh: 660; pascal: 176; javascript: 135; lisp: 41; makefile: 24
file content (79 lines) | stat: -rw-r--r-- 1,283 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# -*- Tcl -*-

package prefer latest

package req nx::test

#
# [::nsf::current calledclass]
#

nx::test case current-calledclass {
  Object create o {
    :public method foo {} {
      return [current calledclass]
    }
  }
  ? {o foo} ""
  Class create C {
    :public class method bar {} {
      return [current calledclass]
    }
    :public method foo {} {
      return [current calledclass]
    }
  }
  ? {[C new] foo} ::C
  ? {C bar} ""
  
  C eval {
    :public method intercept {} {
      return @[current calledclass]@
    }
    :filter add intercept
  }
  ? {[C new] foo} @::C@

  C eval {
    :filter {}
    :public method baz {} {
      return [current calledclass]
    }
  }

  Class create M {
    :public method baz {} {
      return [list [current calledclass] [next]]
    }
  }
  C mixins add M

  ? {[C new] baz} {::C ::C}
}

#
# [::nsf::current calledclass]
#
nx::test case current-calledmethod {
  set body {
    return [list [current nextmethod] {*}[next]]
  }
  Object create o
  set mh [o public method foo {} $body]
  
  ? {o foo} {{}}

  Class create M 
  set mh2 [M public method foo {} $body]
  M filters add foo
  o mixin M

  ? {o foo} [list $mh2 $mh {}]
}

#
# Local variables:
#    mode: tcl
#    tcl-indent-level: 2
#    indent-tabs-mode: nil
# End: