| package test |
| |
| interface TextField { |
| fun getText(): String |
| } |
| |
| interface InputTextField : TextField { |
| fun setText(text: String) |
| } |
| |
| interface MooableTextField : InputTextField { |
| fun moo(a: Int, b: Int, c: Int): Int |
| } |
| |
| class SimpleTextField : MooableTextField { |
| private var text2 = "" |
| override fun getText() = text2 |
| override fun setText(text: String) { |
| this.text2 = text |
| } |
| override fun moo(a: Int, b: Int, c: Int) = a + b + c |
| } |
| |
| class TextFieldWrapper(textField: MooableTextField) : MooableTextField by textField |
| |
| fun box() : String { |
| val textField = TextFieldWrapper(SimpleTextField()) |
| textField.setText("hello world!") |
| |
| if (!textField.getText().equals("hello world!")) return "FAIL #!1" |
| if (textField.moo(1,2,3) != 6) return "FAIL #2" |
| |
| return "OK" |
| } |