@@ -1017,17 +1017,29 @@ TEST_F(GumboParserTest, ComplicatedSelect) {
1017
1017
1018
1018
GumboNode* body;
1019
1019
GetAndAssertBody (root_, &body);
1020
- ASSERT_EQ (2 , GetChildCount (body));
1020
+ ASSERT_EQ (1 , GetChildCount (body));
1021
1021
1022
1022
GumboNode* select = GetChild (body, 0 );
1023
1023
ASSERT_EQ (GUMBO_NODE_ELEMENT, select ->type );
1024
1024
EXPECT_EQ (GUMBO_TAG_SELECT, GetTag (select ));
1025
- ASSERT_EQ (1 , GetChildCount (select ));
1025
+ ASSERT_EQ (2 , GetChildCount (select ));
1026
+
1027
+ GumboNode* div = GetChild (select , 0 );
1028
+ ASSERT_EQ (GUMBO_NODE_ELEMENT, div ->type );
1029
+ EXPECT_EQ (GUMBO_TAG_DIV, GetTag (div ));
1030
+
1031
+ GumboVector* attributes = &div ->v .element .attributes ;
1032
+ ASSERT_EQ (1 , attributes->length );
1026
1033
1027
- GumboNode* optgroup = GetChild (select , 0 );
1034
+ GumboAttribute* klass = static_cast <GumboAttribute*>(attributes->data [0 ]);
1035
+ EXPECT_EQ (GUMBO_ATTR_NAMESPACE_NONE, klass->attr_namespace );
1036
+ EXPECT_STREQ (" class" , klass->name );
1037
+ EXPECT_STREQ (" foo" , klass->value );
1038
+
1039
+ GumboNode* optgroup = GetChild (select , 1 );
1028
1040
ASSERT_EQ (GUMBO_NODE_ELEMENT, optgroup->type );
1029
1041
EXPECT_EQ (GUMBO_TAG_OPTGROUP, GetTag (optgroup));
1030
- ASSERT_EQ (1 , GetChildCount (optgroup));
1042
+ ASSERT_EQ (2 , GetChildCount (optgroup));
1031
1043
1032
1044
GumboNode* option = GetChild (optgroup, 0 );
1033
1045
ASSERT_EQ (GUMBO_NODE_ELEMENT, option->type );
@@ -1038,7 +1050,7 @@ TEST_F(GumboParserTest, ComplicatedSelect) {
1038
1050
ASSERT_EQ (GUMBO_NODE_TEXT, text->type );
1039
1051
EXPECT_STREQ (" Option" , text->v .text .text );
1040
1052
1041
- GumboNode* input = GetChild (body , 1 );
1053
+ GumboNode* input = GetChild (optgroup , 1 );
1042
1054
ASSERT_EQ (GUMBO_NODE_ELEMENT, input->type );
1043
1055
EXPECT_EQ (GUMBO_TAG_INPUT, GetTag (input));
1044
1056
ASSERT_EQ (0 , GetChildCount (input));
@@ -1051,12 +1063,17 @@ TEST_F(GumboParserTest, DoubleSelect) {
1051
1063
GetAndAssertBody (root_, &body);
1052
1064
ASSERT_EQ (2 , GetChildCount (body));
1053
1065
1054
- GumboNode* select = GetChild (body, 0 );
1055
- ASSERT_EQ (GUMBO_NODE_ELEMENT, select ->type );
1056
- EXPECT_EQ (GUMBO_TAG_SELECT, GetTag (select ));
1057
- ASSERT_EQ (0 , GetChildCount (select ));
1066
+ GumboNode* select1 = GetChild (body, 0 );
1067
+ ASSERT_EQ (GUMBO_NODE_ELEMENT, select1 ->type );
1068
+ EXPECT_EQ (GUMBO_TAG_SELECT, GetTag (select1 ));
1069
+ ASSERT_EQ (0 , GetChildCount (select1 ));
1058
1070
1059
- GumboNode* div = GetChild (body, 1 );
1071
+ GumboNode* select2 = GetChild (body, 1 );
1072
+ ASSERT_EQ (GUMBO_NODE_ELEMENT, select2->type );
1073
+ EXPECT_EQ (GUMBO_TAG_SELECT, GetTag (select2));
1074
+ ASSERT_EQ (1 , GetChildCount (select2));
1075
+
1076
+ GumboNode* div = GetChild (select2, 0 );
1060
1077
ASSERT_EQ (GUMBO_NODE_ELEMENT, div ->type );
1061
1078
EXPECT_EQ (GUMBO_TAG_DIV, GetTag (div ));
1062
1079
ASSERT_EQ (0 , GetChildCount (div ));
@@ -1067,19 +1084,19 @@ TEST_F(GumboParserTest, InputInSelect) {
1067
1084
1068
1085
GumboNode* body;
1069
1086
GetAndAssertBody (root_, &body);
1070
- ASSERT_EQ (3 , GetChildCount (body));
1087
+ ASSERT_EQ (1 , GetChildCount (body));
1071
1088
1072
1089
GumboNode* select = GetChild (body, 0 );
1073
1090
ASSERT_EQ (GUMBO_NODE_ELEMENT, select ->type );
1074
1091
EXPECT_EQ (GUMBO_TAG_SELECT, GetTag (select ));
1075
- ASSERT_EQ (0 , GetChildCount (select ));
1092
+ ASSERT_EQ (2 , GetChildCount (select ));
1076
1093
1077
- GumboNode* input = GetChild (body, 1 );
1094
+ GumboNode* input = GetChild (select , 0 );
1078
1095
ASSERT_EQ (GUMBO_NODE_ELEMENT, input->type );
1079
1096
EXPECT_EQ (GUMBO_TAG_INPUT, GetTag (input));
1080
1097
ASSERT_EQ (0 , GetChildCount (input));
1081
1098
1082
- GumboNode* div = GetChild (body, 2 );
1099
+ GumboNode* div = GetChild (select , 1 );
1083
1100
ASSERT_EQ (GUMBO_NODE_ELEMENT, div ->type );
1084
1101
EXPECT_EQ (GUMBO_TAG_DIV, GetTag (div ));
1085
1102
ASSERT_EQ (0 , GetChildCount (div ));
0 commit comments