package TestCase::Interface {
  use TestCase::Minimal;
  use TestCase::Interface::Interface;
  use TestCase::Interface::ImplementInterface1;
  use TestCase::Interface::ImplementInterface2;

  sub basic : int () {
    my $object : Object = new TestCase::Minimal;
    my $implement_interface1 : TestCase::Interface::Interface = new TestCase::Interface::ImplementInterface1;
    my $implement_interface2 : TestCase::Interface::Interface = new TestCase::Interface::ImplementInterface2;
    
    my $num1 = $implement_interface1->foo(0, 0);
    my $num2 = $implement_interface2->foo(0, 0);

    my $minimal = (TestCase::Minimal)$object;
    $minimal->{x} = 4;
    
    if ($num1 == 1) {
      if ($num2 == 2) {
        if ($minimal->{x} == 4) {
          return 1;
        }
      }
    }
  }
}