1b04d3553SJoe Hershberger /* 2b04d3553SJoe Hershberger * (C) Copyright 2015 3b04d3553SJoe Hershberger * Joe Hershberger, National Instruments, joe.hershberger@ni.com 4b04d3553SJoe Hershberger * 5b04d3553SJoe Hershberger * SPDX-License-Identifier: GPL-2.0 6b04d3553SJoe Hershberger */ 7b04d3553SJoe Hershberger 8b04d3553SJoe Hershberger #include <common.h> 9b04d3553SJoe Hershberger #include <command.h> 10b04d3553SJoe Hershberger #include <env_attr.h> 11b04d3553SJoe Hershberger #include <test/env.h> 12b04d3553SJoe Hershberger #include <test/ut.h> 13b04d3553SJoe Hershberger 14b04d3553SJoe Hershberger static int env_test_attrs_lookup(struct unit_test_state *uts) 15b04d3553SJoe Hershberger { 16b04d3553SJoe Hershberger char attrs[32]; 17b04d3553SJoe Hershberger 18b04d3553SJoe Hershberger ut_assertok(env_attr_lookup("foo:bar", "foo", attrs)); 19b04d3553SJoe Hershberger ut_asserteq_str("bar", attrs); 20b04d3553SJoe Hershberger 21b04d3553SJoe Hershberger ut_assertok(env_attr_lookup(",foo:bar", "foo", attrs)); 22b04d3553SJoe Hershberger ut_asserteq_str("bar", attrs); 23b04d3553SJoe Hershberger 24b04d3553SJoe Hershberger ut_assertok(env_attr_lookup(",foo:bar,", "foo", attrs)); 25b04d3553SJoe Hershberger ut_asserteq_str("bar", attrs); 26b04d3553SJoe Hershberger 27b04d3553SJoe Hershberger ut_assertok(env_attr_lookup(" foo:bar", "foo", attrs)); 28b04d3553SJoe Hershberger ut_asserteq_str("bar", attrs); 29b04d3553SJoe Hershberger 30b04d3553SJoe Hershberger ut_assertok(env_attr_lookup("foo : bar", "foo", attrs)); 31b04d3553SJoe Hershberger ut_asserteq_str("bar", attrs); 32b04d3553SJoe Hershberger 33b04d3553SJoe Hershberger ut_assertok(env_attr_lookup(" foo: bar ", "foo", attrs)); 34b04d3553SJoe Hershberger ut_asserteq_str("bar", attrs); 35b04d3553SJoe Hershberger 36b04d3553SJoe Hershberger ut_assertok(env_attr_lookup("foo:bar ", "foo", attrs)); 37b04d3553SJoe Hershberger ut_asserteq_str("bar", attrs); 38b04d3553SJoe Hershberger 39b04d3553SJoe Hershberger ut_assertok(env_attr_lookup(",foo:bar,goo:baz", "foo", attrs)); 40b04d3553SJoe Hershberger ut_asserteq_str("bar", attrs); 41b04d3553SJoe Hershberger 42b04d3553SJoe Hershberger ut_asserteq(-ENOENT, env_attr_lookup(",,", "foo", attrs)); 43b04d3553SJoe Hershberger 44b04d3553SJoe Hershberger ut_asserteq(-ENOENT, env_attr_lookup("goo:baz", "foo", attrs)); 45b04d3553SJoe Hershberger 46b04d3553SJoe Hershberger ut_assertok(env_attr_lookup("foo:bar,foo:bat,foo:baz", "foo", attrs)); 47b04d3553SJoe Hershberger ut_asserteq_str("baz", attrs); 48b04d3553SJoe Hershberger 49b04d3553SJoe Hershberger ut_assertok(env_attr_lookup( 50b04d3553SJoe Hershberger " foo : bar , foo : bat , foot : baz ", "foo", attrs)); 51b04d3553SJoe Hershberger ut_asserteq_str("bat", attrs); 52b04d3553SJoe Hershberger 53b04d3553SJoe Hershberger ut_assertok(env_attr_lookup( 54b04d3553SJoe Hershberger " foo : bar , foo : bat , ufoo : baz ", "foo", attrs)); 55b04d3553SJoe Hershberger ut_asserteq_str("bat", attrs); 56b04d3553SJoe Hershberger 57b04d3553SJoe Hershberger ut_asserteq(-EINVAL, env_attr_lookup(NULL, "foo", attrs)); 58b04d3553SJoe Hershberger ut_asserteq(-EINVAL, env_attr_lookup("foo:bar", "foo", NULL)); 59b04d3553SJoe Hershberger 60b04d3553SJoe Hershberger return 0; 61b04d3553SJoe Hershberger } 62b04d3553SJoe Hershberger ENV_TEST(env_test_attrs_lookup, 0); 63*f68c2b25SJoe Hershberger 64*f68c2b25SJoe Hershberger #ifdef CONFIG_REGEX 65*f68c2b25SJoe Hershberger static int env_test_attrs_lookup_regex(struct unit_test_state *uts) 66*f68c2b25SJoe Hershberger { 67*f68c2b25SJoe Hershberger char attrs[32]; 68*f68c2b25SJoe Hershberger 69*f68c2b25SJoe Hershberger ut_assertok(env_attr_lookup("foo1?:bar", "foo", attrs)); 70*f68c2b25SJoe Hershberger ut_asserteq_str("bar", attrs); 71*f68c2b25SJoe Hershberger 72*f68c2b25SJoe Hershberger ut_assertok(env_attr_lookup("foo1?:bar", "foo1", attrs)); 73*f68c2b25SJoe Hershberger ut_asserteq_str("bar", attrs); 74*f68c2b25SJoe Hershberger 75*f68c2b25SJoe Hershberger ut_assertok(env_attr_lookup(".foo:bar", ".foo", attrs)); 76*f68c2b25SJoe Hershberger ut_asserteq_str("bar", attrs); 77*f68c2b25SJoe Hershberger 78*f68c2b25SJoe Hershberger ut_assertok(env_attr_lookup(".foo:bar", "ufoo", attrs)); 79*f68c2b25SJoe Hershberger ut_asserteq_str("bar", attrs); 80*f68c2b25SJoe Hershberger 81*f68c2b25SJoe Hershberger ut_assertok(env_attr_lookup("\\.foo:bar", ".foo", attrs)); 82*f68c2b25SJoe Hershberger ut_asserteq_str("bar", attrs); 83*f68c2b25SJoe Hershberger 84*f68c2b25SJoe Hershberger ut_asserteq(-ENOENT, env_attr_lookup("\\.foo:bar", "ufoo", attrs)); 85*f68c2b25SJoe Hershberger 86*f68c2b25SJoe Hershberger return 0; 87*f68c2b25SJoe Hershberger } 88*f68c2b25SJoe Hershberger ENV_TEST(env_test_attrs_lookup_regex, 0); 89*f68c2b25SJoe Hershberger #endif 90