Hi Przemyslaw, On 15 April 2015 at 05:07, Przemyslaw Marczak <p.marc...@samsung.com> wrote: > This commit introduces simple tests for functions: > - uclass_find_device_by_name() > - uclass_get_device_by_name() > > Tests added by this commit: > - Test: dm_test_uclass_devices_find_by_name: for uclass id: UCLASS_TEST_FDT > * get uclass's devices by uclass_find_first/next_device() each as 'testdev', > * for each returned device, call: uclass_find_device_by_name(), > with previously returned device's name as an argument ('testdev->name'). > * for the found device ('founddev') check if: > * founddev != NULL > * testdev == founddev > * testdev->name == founddev->name (by strcmp) > > - Test: dm_test_uclass_devices_get_by_name: for uclass id: UCLASS_TEST_FDT > * get uclass's devices by uclass_get_first/next_device() each as 'testdev', > * for each returned device, call: uclass_get_device_by_name(), > with previously returned device's name as an argument ('testdev->name'). > * for the found device ('founddev') check if: > * founddev != NULL > * founddev is active > * testdev == founddev > * testdev->name == founddev->name (by strcmp) > > Signed-off-by: Przemyslaw Marczak <p.marc...@samsung.com> > Cc: Simon Glass <s...@chromium.org> > --- > Changes V4: > -new commit > --- > test/dm/core.c | 81 > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 81 insertions(+) > > diff --git a/test/dm/core.c b/test/dm/core.c > index 3a8dd1d..b678511 100644 > --- a/test/dm/core.c > +++ b/test/dm/core.c > @@ -674,6 +674,43 @@ static int dm_test_uclass_devices_find(struct > dm_test_state *dms) > } > DM_TEST(dm_test_uclass_devices_find, DM_TESTF_SCAN_PDATA); > > +static int dm_test_uclass_devices_find_by_name(struct dm_test_state *dms) > +{ > + struct udevice *founddev; > + struct udevice *testdev; > + int foundret, ret; > + > + /**
/* (It is not a docbook comment for a function, etc.) > + * For each test device found in fdt like: "a-test", "b-test", etc., > + * use its name and try to find it by uclass_find_device_by_name(). > + * Then, on success check if: > + * - current 'testdev' name is equal to the returned 'founddev' name > + * - current 'testdev' pointer is equal to the returned 'founddev' > + * > + * We assume that, each uclass's device name is unique, so if not, > then > + * this will fail on checking condition: testdev == founddev, since > the > + * uclass_find_device_by_name(), returns the first device by given > name. > + */ > + for (ret = uclass_find_first_device(UCLASS_TEST_FDT, &testdev); > + testdev; > + ret = uclass_find_next_device(&testdev)) { > + ut_assert(!ret); > + ut_assert(testdev); > + > + foundret = uclass_find_device_by_name(UCLASS_TEST_FDT, > + testdev->name, > + &founddev); > + > + ut_assert(!foundret); > + ut_assert(testdev); > + ut_asserteq_str(testdev->name, founddev->name); > + ut_asserteq_ptr(testdev, founddev); > + } > + > + return 0; > +} > +DM_TEST(dm_test_uclass_devices_find_by_name, DM_TESTF_SCAN_FDT); > + > static int dm_test_uclass_devices_get(struct dm_test_state *dms) > { > struct udevice *dev; > @@ -691,6 +728,50 @@ static int dm_test_uclass_devices_get(struct > dm_test_state *dms) > } > DM_TEST(dm_test_uclass_devices_get, DM_TESTF_SCAN_PDATA); > > +static int dm_test_uclass_devices_get_by_name(struct dm_test_state *dms) > +{ > + struct udevice *founddev; > + struct udevice *testdev; > + int ret, foundret; > + > + /** /* > + * For each test device found in fdt like: "a-test", "b-test", etc., > + * use its name and try to get it by uclass_get_device_by_name(). > + * On success check if: > + * - returned founddev' is active > + * - current 'testdev' name is equal to the returned 'founddev' name > + * - current 'testdev' pointer is equal to the returned 'founddev' > + * > + * We asserts that the 'testdev' is active on each loop entry, so we > + * could be sure that the 'founddev' is activated too, but for sure > + * we check it again. > + * > + * We assume that, each uclass's device name is unique, so if not, > then > + * this will fail on checking condition: testdev == founddev, since > the > + * uclass_get_device_by_name(), returns the first device by given > name. > + */ > + for (ret = uclass_first_device(UCLASS_TEST_FDT, &testdev); > + testdev; > + ret = uclass_next_device(&testdev)) { > + ut_assert(!ret); > + ut_assert(testdev); > + ut_assert(device_active(testdev)); > + > + foundret = uclass_get_device_by_name(UCLASS_TEST_FDT, > + testdev->name, > + &founddev); > + > + ut_assert(!foundret); nit: ut_assertok(foundret); > + ut_assert(founddev); > + ut_assert(device_active(founddev)); > + ut_asserteq_str(testdev->name, founddev->name); > + ut_asserteq_ptr(testdev, founddev); > + } > + > + return 0; > +} > +DM_TEST(dm_test_uclass_devices_get_by_name, DM_TESTF_SCAN_FDT); > + > static int dm_test_device_get_uclass_id(struct dm_test_state *dms) > { > struct udevice *dev; > -- > 1.9.1 > If you like I can tweak these when applying. I need to wait until the driver model pull request is accepted before applying anything else. Regards, Simon _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot