X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=include%2Fdm%2Ftest.h;h=a4bc5c8404aef87a6ec04a05f319d76d6f7c1eed;hb=4395e06eb9907e22869cfe3bf6259a0f0cefca13;hp=235d728bfbe62ea9af8cc3f6e946a248ce9791cd;hpb=a327dee0f40bcdebaba1a3e47f2b9f1ceb970d2a;p=oweals%2Fu-boot.git diff --git a/include/dm/test.h b/include/dm/test.h index 235d728bfb..a4bc5c8404 100644 --- a/include/dm/test.h +++ b/include/dm/test.h @@ -8,6 +8,7 @@ #define __DM_TEST_H #include +#include /** * struct dm_test_cdata - configuration data for test instance @@ -43,6 +44,7 @@ enum { /* For uclass */ DM_TEST_OP_POST_BIND, DM_TEST_OP_PRE_UNBIND, + DM_TEST_OP_PRE_PROBE, DM_TEST_OP_POST_PROBE, DM_TEST_OP_PRE_REMOVE, DM_TEST_OP_INIT, @@ -66,6 +68,8 @@ enum { struct dm_test_priv { int ping_total; int op_count[DM_TEST_OP_COUNT]; + int uclass_flag; + int uclass_total; }; /** @@ -87,19 +91,40 @@ struct dm_test_uclass_priv { * * @sum: Test value used to check parent data works correctly * @flag: Used to track calling of parent operations + * @uclass_flag: Used to track calling of parent operations by uclass */ struct dm_test_parent_data { int sum; int flag; }; +/* Test values for test device's uclass platform data */ +enum { + TEST_UC_PDATA_INTVAL1 = 2, + TEST_UC_PDATA_INTVAL2 = 334, + TEST_UC_PDATA_INTVAL3 = 789452, +}; + +/** + * struct dm_test_uclass_platda - uclass's information on each device + * + * @intval1: set to TEST_UC_PDATA_INTVAL1 in .post_bind method of test uclass + * @intval2: set to TEST_UC_PDATA_INTVAL2 in .post_bind method of test uclass + * @intval3: set to TEST_UC_PDATA_INTVAL3 in .post_bind method of test uclass + */ +struct dm_test_perdev_uc_pdata { + int intval1; + int intval2; + int intval3; +}; + /* * Operation counts for the test driver, used to check that each method is * called correctly */ extern int dm_testdrv_op_count[DM_TEST_OP_COUNT]; -extern struct dm_test_state global_test_state; +extern struct unit_test_state global_dm_test_state; /* * struct dm_test_state - Entire state of dm test system @@ -108,7 +133,6 @@ extern struct dm_test_state global_test_state; * * @root: Root device * @testdev: Test device - * @fail_count: Number of tests that failed * @force_fail_alloc: Force all memory allocs to fail * @skip_post_probe: Skip uclass post-probe processing * @removed: Used to keep track of a device that was removed @@ -116,7 +140,6 @@ extern struct dm_test_state global_test_state; struct dm_test_state { struct udevice *root; struct udevice *testdev; - int fail_count; int force_fail_alloc; int skip_post_probe; struct udevice *removed; @@ -129,26 +152,8 @@ enum { DM_TESTF_SCAN_FDT = 1 << 2, /* scan device tree */ }; -/** - * struct dm_test - Information about a driver model test - * - * @name: Name of test - * @func: Function to call to perform test - * @flags: Flags indicated pre-conditions for test - */ -struct dm_test { - const char *name; - int (*func)(struct dm_test_state *dms); - int flags; -}; - /* Declare a new driver model test */ -#define DM_TEST(_name, _flags) \ - ll_entry_declare(struct dm_test, _name, dm_test) = { \ - .name = #_name, \ - .flags = _flags, \ - .func = _name, \ - } +#define DM_TEST(_name, _flags) UNIT_TEST(_name, _flags, dm_test) /* Declare ping methods for the drivers */ int test_ping(struct udevice *dev, int pingval, int *pingret); @@ -165,7 +170,7 @@ int testfdt_ping(struct udevice *dev, int pingval, int *pingret); * @priv: Pointer to private test information * @return 0 if OK, -ve on error */ -int dm_check_operations(struct dm_test_state *dms, struct udevice *dev, +int dm_check_operations(struct unit_test_state *uts, struct udevice *dev, uint32_t base, struct dm_test_priv *priv); /** @@ -175,15 +180,26 @@ int dm_check_operations(struct dm_test_state *dms, struct udevice *dev, * @num_devices: Number of test devices to check * @return 0 if OK, -ve on error */ -int dm_check_devices(struct dm_test_state *dms, int num_devices); +int dm_check_devices(struct unit_test_state *uts, int num_devices); /** - * dm_test_main() - Run all the tests + * dm_leak_check_start() - Prepare to check for a memory leak * - * This runs all available driver model tests + * Call this before allocating memory to record the amount of memory being + * used. * - * @return 0 if OK, -ve on error + * @dms: Overall test state */ -int dm_test_main(void); +void dm_leak_check_start(struct unit_test_state *uts); + +/** + * dm_leak_check_end() - Check that no memory has leaked + * + * Call this after dm_leak_check_start() and after you have hopefuilly freed + * all the memory that was allocated. This function will print an error if + * it sees a different amount of total memory allocated than before. + * + * @dms: Overall test state + */int dm_leak_check_end(struct unit_test_state *uts); #endif