File: director_nested_runme.php

package info (click to toggle)
swig 3.0.2-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 34,980 kB
  • ctags: 16,742
  • sloc: cpp: 54,566; ansic: 26,563; java: 9,485; python: 7,204; cs: 6,106; makefile: 5,709; yacc: 5,571; sh: 4,988; ruby: 3,742; perl: 3,224; lisp: 1,825; php: 1,670; tcl: 968; ml: 747; xml: 115
file content (74 lines) | stat: -rw-r--r-- 1,623 bytes parent folder | download | duplicates (16)
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
<?php

require "tests.php";
require "director_nested.php";

// No new functions
check::functions(array(foo_int_advance,foo_int_do_advance,bar_step,bar_do_advance,bar_do_step,foobar_int_get_value,foobar_int_get_name,foobar_int_name,foobar_int_get_self,foobar_int_do_advance,foobar_int_do_step));
// No new classes
check::classes(array(Foo_int,Bar,FooBar_int));
// now new vars
check::globals(array());

class A extends FooBar_int {
  function do_step() {
    return "A::do_step;";
  }

  function get_value() {
    return "A::get_value";
  }
}

$a = new A();
check::equal($a->step(), "Bar::step;Foo::advance;Bar::do_advance;A::do_step;", "Bad A virtual resolution");

class B extends FooBar_int {
  function do_advance() {
    return "B::do_advance;" . $this->do_step();
  }

  function do_step() {
    return "B::do_step;";
  }

  function get_value() {
    return 1;
  }
}

$b = new B();

check::equal($b->step(), "Bar::step;Foo::advance;B::do_advance;B::do_step;", "Bad B virtual resolution");

class C extends FooBar_int {
  function do_advance() {
    return "C::do_advance;" . parent::do_advance();
  }

  function do_step() {
    return "C::do_step;";
  }

  function get_value() {
    return 2;
  }

  function get_name() {
    return parent::get_name() . " hello";
  }
}

$cc = new C();
# TODO: Currently we do not track the dynamic type of returned 
# objects, so we skip the get_self() call.
#$c = Foobar_int::get_self($cc);
$c = $cc;
$c->advance();

check::equal($c->get_name(), "FooBar::get_name hello", "get_name failed");

check::equal($c->name(), "FooBar::get_name hello", "name failed");

check::done();
?>