From f48f3e754402169136b4beedf80c745f587226c9 Mon Sep 17 00:00:00 2001
From: Emmanuel Garette <egarette@cadoles.com>
Date: Sat, 1 Feb 2014 16:49:16 +0100
Subject: [PATCH] add tests for find()

---
 test/test_config_api.py | 21 ++++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/test/test_config_api.py b/test/test_config_api.py
index f0681ea..7489766 100644
--- a/test/test_config_api.py
+++ b/test/test_config_api.py
@@ -13,17 +13,20 @@ def make_description():
     objspaceoption = ChoiceOption('objspace', 'Object space',
                                   ('std', 'thunk'), 'std')
     booloption = BoolOption('bool', 'Test boolean option', default=True)
+    booloption2 = BoolOption('bool', 'Test boolean option', default=True)
     intoption = IntOption('int', 'Test int option', default=0)
+    floatoption2 = FloatOption('float', 'Test float option', default=2.3)
     floatoption = FloatOption('float', 'Test float option', default=2.3)
     stroption = StrOption('str', 'Test string option', default="abc")
     boolop = BoolOption('boolop', 'Test boolean option op', default=True)
     wantref_option = BoolOption('wantref', 'Tests', default=False)
     wantframework_option = BoolOption('wantframework', 'Test', default=False)
-    gcgroup = OptionDescription('gc', '', [gcoption, gcdummy, floatoption])
+    gcgroup2 = OptionDescription('gc2', '', [booloption2])
+    gcgroup = OptionDescription('gc', '', [gcgroup2, gcoption, gcdummy, floatoption])
     descr = OptionDescription('tiramisu', '', [gcgroup, booloption, objspaceoption,
                                                wantref_option, stroption,
                                                wantframework_option,
-                                               intoption, boolop])
+                                               intoption, boolop, floatoption2])
     return descr
 
 
@@ -101,7 +104,10 @@ def test_find_in_config():
     descr = make_description()
     conf = Config(descr)
     assert conf.find(byname='dummy') == [conf.unwrap_from_path('gc.dummy')]
+    assert conf.find(byname='float') == [conf.unwrap_from_path('gc.float'), conf.unwrap_from_path('float')]
+    assert conf.find_first(byname='bool') == conf.unwrap_from_path('gc.gc2.bool')
     assert conf.find_first(byname='dummy') == conf.unwrap_from_path('gc.dummy')
+    assert conf.find_first(byname='float') == conf.unwrap_from_path('gc.float')
     assert conf.find(bytype=ChoiceOption) == [conf.unwrap_from_path('gc.name'), conf.unwrap_from_path('objspace')]
     assert conf.find_first(bytype=ChoiceOption) == conf.unwrap_from_path('gc.name')
     assert conf.find(byvalue='ref') == [conf.unwrap_from_path('gc.name')]
@@ -111,9 +117,14 @@ def test_find_in_config():
     assert conf.find_first(bytype=BoolOption, byname='dummy') == conf.unwrap_from_path('gc.dummy')
     assert conf.find(byvalue=False, byname='dummy') == [conf.unwrap_from_path('gc.dummy')]
     assert conf.find_first(byvalue=False, byname='dummy') == conf.unwrap_from_path('gc.dummy')
-    ## byattrs
-    #assert conf.find_first(byattrs= dict(default=2.3)) == conf.unwrap_from_path('gc.float')
-    #assert conf.find_first(byvalue=False, byname='dummy', byattrs=dict(default=False)) == conf.unwrap_from_path('gc.dummy')
+    #subconfig
+    assert conf.gc.find(byname='dummy') == [conf.unwrap_from_path('gc.dummy')]
+    assert conf.gc.find(byname='float') == [conf.unwrap_from_path('gc.float')]
+    assert conf.gc.find(byname='bool') == [conf.unwrap_from_path('gc.gc2.bool')]
+    raises(AttributeError, "conf.gc.find(byname='wantref').first()")
+    # not OptionDescription
+    raises(AttributeError, "conf.find_first(byname='gc')")
+    raises(AttributeError, "conf.gc.find_first(byname='gc2')")
 
 
 def test_find_multi():