Skip to content

Commit 4eb27da

Browse files
committed
Implemented parsing of 'class' attribute for <visibility> and <validity> elements. For issue #58.
1 parent fcedfe1 commit 4eb27da

File tree

3 files changed

+34
-14
lines changed

3 files changed

+34
-14
lines changed

src/ObjectFactory.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,16 @@ namespace shellanything
159159

160160
Validator result;
161161

162+
//parse class
163+
std::string class_;
164+
if (ParseAttribute(element, "class", true, true, class_, error))
165+
{
166+
if (!class_.empty())
167+
{
168+
result.SetClass(class_);
169+
}
170+
}
171+
162172
//parse maxfiles
163173
int maxfiles = -1;
164174
if (ParseAttribute(element, "maxfiles", true, true, maxfiles, error))

test/TestObjectFactory.cpp

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ namespace shellanything { namespace test
152152

153153
//ASSERT a 8 menus are available
154154
Menu::MenuPtrList menus = cmgr.GetConfigurations()[0]->GetMenus();
155-
ASSERT_EQ( 8, menus.size() );
155+
ASSERT_EQ( 9, menus.size() );
156156

157157
//assert <visibility> tag properly parsed
158158
static const std::string expected_property = "bar";
@@ -162,16 +162,18 @@ namespace shellanything { namespace test
162162
static const std::string expected_inverse_maxfiles = "maxfiles";
163163
static const std::string expected_inverse_many = "maxfiles;maxfolders";
164164
static const std::string expected_inverse_unknown = "foo";
165-
166-
ASSERT_EQ( expected_property, menus[00]->GetVisibility().GetProperties() );
167-
ASSERT_EQ( 5, menus[01]->GetVisibility().GetMaxFiles() );
168-
ASSERT_EQ( 6, menus[01]->GetVisibility().GetMaxDirectories() );
169-
ASSERT_EQ( expected_file_extension, menus[02]->GetVisibility().GetFileExtensions() );
170-
ASSERT_EQ( expected_file_exists, menus[03]->GetVisibility().GetFileExists() );
171-
ASSERT_EQ( expected_inverse_empty, menus[04]->GetVisibility().GetInserve() );
172-
ASSERT_EQ( expected_inverse_maxfiles, menus[05]->GetVisibility().GetInserve() );
173-
ASSERT_EQ( expected_inverse_many, menus[06]->GetVisibility().GetInserve() );
174-
ASSERT_EQ( expected_inverse_unknown, menus[07]->GetVisibility().GetInserve() );
165+
static const std::string expected_class = "file";
166+
167+
ASSERT_EQ( expected_property, menus[0]->GetVisibility().GetProperties() );
168+
ASSERT_EQ( 5, menus[1]->GetVisibility().GetMaxFiles() );
169+
ASSERT_EQ( 6, menus[1]->GetVisibility().GetMaxDirectories() );
170+
ASSERT_EQ( expected_file_extension, menus[2]->GetVisibility().GetFileExtensions() );
171+
ASSERT_EQ( expected_file_exists, menus[3]->GetVisibility().GetFileExists() );
172+
ASSERT_EQ( expected_inverse_empty, menus[4]->GetVisibility().GetInserve() );
173+
ASSERT_EQ( expected_inverse_maxfiles, menus[5]->GetVisibility().GetInserve() );
174+
ASSERT_EQ( expected_inverse_many, menus[6]->GetVisibility().GetInserve() );
175+
ASSERT_EQ( expected_inverse_unknown, menus[7]->GetVisibility().GetInserve() );
176+
ASSERT_EQ( expected_class, menus[8]->GetVisibility().GetClass() );
175177

176178
//cleanup
177179
ASSERT_TRUE( ra::filesystem::DeleteFile(template_target_path.c_str()) ) << "Failed deleting file '" << template_target_path << "'.";

test/test_files/TestObjectFactory.testParseValidator.xml

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,29 +41,37 @@
4141
</actions>
4242
</menu>
4343

44-
<menu name="menu05" inverse="maxfiles">
44+
<menu name="menu05">
4545
<!-- inverse attribute set to maxfiles -->
4646
<visibility inverse="maxfiles" />
4747
<actions>
4848
<property name="baz" value="true" />
4949
</actions>
5050
</menu>
5151

52-
<menu name="menu06" inverse="maxfiles;maxfolders">
52+
<menu name="menu06">
5353
<!-- inverse multiple value -->
5454
<visibility inverse="maxfiles;maxfolders" />
5555
<actions>
5656
<property name="baz" value="true" />
5757
</actions>
5858
</menu>
5959

60-
<menu name="menu07" inverse="foo">
60+
<menu name="menu07">
6161
<!-- inverse unknown attribute -->
6262
<visibility inverse="foo" />
6363
<actions>
6464
<property name="baz" value="true" />
6565
</actions>
6666
</menu>
6767

68+
<menu name="menu08">
69+
<!-- class attribute is set -->
70+
<visibility class="file" />
71+
<actions>
72+
<property name="baz" value="true" />
73+
</actions>
74+
</menu>
75+
6876
</shell>
6977
</root>

0 commit comments

Comments
 (0)