/* LICENSE BEGIN This file is part of the SixtyFPS Project -- https://sixtyfps.io Copyright (c) 2021 Olivier Goffart Copyright (c) 2021 Simon Hausmann SPDX-License-Identifier: GPL-3.0-only This file is also available under commercial licensing terms. Please contact info@sixtyfps.io for more information. LICENSE END */ TestCase := Rectangle { callback test_callback; callback test_callback2; callback test_callback3; property callback_emission_count; test_callback => { callback_emission_count += 1; } test_callback2 => { callback_emission_count = 88; root.test_callback3(); } } /* ```cpp auto handle = TestCase::create(); const TestCase &instance = *handle; int callback_3_emited = 0; instance.on_test_callback3([&]{ callback_3_emited++; }); instance.set_callback_emission_count(0); assert_eq(instance.get_callback_emission_count(), 0); instance.invoke_test_callback(); assert_eq(instance.get_callback_emission_count(), 1); instance.invoke_test_callback(); assert_eq(instance.get_callback_emission_count(), 2); assert_eq(callback_3_emited, 0); instance.invoke_test_callback2(); assert_eq(instance.get_callback_emission_count(), 88); assert_eq(callback_3_emited, 1); ``` ```rust let instance = TestCase::new(); let callback_3_emited = std::rc::Rc::new(std::cell::Cell::new(0)); instance.on_test_callback3({ let callback_3_emited = callback_3_emited.clone(); move || callback_3_emited.set(callback_3_emited.get() + 1) }); instance.set_callback_emission_count(0); assert_eq!(instance.get_callback_emission_count(), 0); instance.invoke_test_callback(); assert_eq!(instance.get_callback_emission_count(), 1); instance.invoke_test_callback(); assert_eq!(instance.get_callback_emission_count(), 2); assert_eq!(callback_3_emited.get(), 0); instance.invoke_test_callback2(); assert_eq!(instance.get_callback_emission_count(), 88); assert_eq!(callback_3_emited.get(), 1); ``` ```js var callback_3_emited = 0; var instance = new sixtyfps.TestCase({ test_callback3: function() { callback_3_emited++; } }); instance.callback_emission_count = 0; assert.equal(instance.callback_emission_count, 0); instance.test_callback(); assert.equal(instance.callback_emission_count, 1); let x = instance.test_callback; assert.equal(instance.callback_emission_count, 1); x() assert.equal(instance.callback_emission_count, 2); assert.equal(callback_3_emited, 0); instance.test_callback2(); assert.equal(instance.callback_emission_count, 88); assert.equal(callback_3_emited, 1); ``` */