bool check_revoked(const std::vector <Packet::Ptr> & packets, const std::string & keyid){ for(Packet::Ptr const & p: packets){ // if a signature packet if (p -> get_tag() == 2){ std::string raw = p -> raw(); Tag2 tag2(raw); for(Subpacket::Ptr const & s: tag2.get_unhashed_subpackets()){ if (s -> get_type() == 16){ raw = s -> raw(); Tag2Sub16 tag2sub16(raw); // check that this signature packet is for the public key if (tag2sub16.get_keyid() == keyid){ if ((tag2.get_type() == 0x20) || (tag2.get_type() == 0x28)){ return true; } } } } for(Subpacket::Ptr const & s: tag2.get_hashed_subpackets()){ if (s -> get_type() == 16){ raw = s -> raw(); Tag2Sub16 tag2sub16(raw); // check that this signature packet is for the public key if (tag2sub16.get_keyid() == keyid){ if ((tag2.get_type() == 0x20) || (tag2.get_type() == 0x28)){ return true; } } } } } } return false; }
void TagTest::testCompare() { Tag tag1("artist1", "artist", 1, QStringList() << "tag1"); Tag tag2("artist1", "artist", 2, QStringList() << "tag2"); Tag tag3("artist2", "artist", 3, QStringList() << "tag3"); Tag tag4("artist1", "character", 4, QStringList() << "tag4"); Tag tag5("artist1", "unknown", 5, QStringList() << "tag5"); QCOMPARE(tag1 == tag1, true); QCOMPARE(tag1 == tag2, true); QCOMPARE(tag1 == tag3, false); QCOMPARE(tag1 == tag4, false); QCOMPARE(tag1 == tag5, true); }
void TagElementTest() { std::basic_string<utf16_t> testTag = Transcoder::UTF8toUTF16("tagname hoge=\"fuga\" "); TagElement<utf16_t> tag(testTag); CPPUNIT_ASSERT(tag.tagName.length() == 7); CPPUNIT_ASSERT_MESSAGE(Transcoder::UTF16toUTF8(tag.tagName.c_str()), tag.tagName == Transcoder::UTF8toUTF16("tagname")); CPPUNIT_ASSERT(tag.attributes.size() == 1); CPPUNIT_ASSERT(tag.attributes[Transcoder::UTF8toUTF16("hoge")] == Transcoder::UTF8toUTF16("fuga")); testTag = std::basic_string<utf16_t>(Transcoder::UTF8toUTF16("tagname2")); TagElement<utf16_t> tag2(testTag); CPPUNIT_ASSERT(tag2.tagName.length() == 8); CPPUNIT_ASSERT(tag2.tagName == Transcoder::UTF8toUTF16("tagname2")); CPPUNIT_ASSERT(tag2.attributes.size() == 0); CPPUNIT_ASSERT_THROW(TagElement<utf16_t>(Transcoder::UTF8toUTF16("hoge fuga=123")), InvalidTagException); CPPUNIT_ASSERT_THROW(TagElement<utf16_t>(Transcoder::UTF8toUTF16("hoge fuga=")), InvalidTagException); CPPUNIT_ASSERT_THROW(TagElement<utf16_t>(Transcoder::UTF8toUTF16("hoge fuga\"123\"")), InvalidTagException); TagElement<utf16_t> tag3(Transcoder::UTF8toUTF16("hoge fuga=\"\"")); CPPUNIT_ASSERT(tag3.attributes.size() == 1); CPPUNIT_ASSERT(tag3.attributes[Transcoder::UTF8toUTF16("fuga")] == Transcoder::UTF8toUTF16("")); std::string utf8str = Transcoder::UTF16toUTF8(tag3.toString()); const size_t pos = utf8str.find('\n'); if (pos != std::string::npos) utf8str.erase(pos); CPPUNIT_ASSERT_MESSAGE(utf8str, utf8str == "<hoge fuga=\"\" />"); }
void Table::parse(Widget *parent, std::map<int, Widget*>& widgets, tinyxml2::XMLElement *e) { Widget::parse(parent, widgets, e); for(tinyxml2::XMLElement *e1 = e->FirstChildElement(); e1; e1 = e1->NextSiblingElement()) { std::string tag1(e1->Value()); if(tag1 == "header") { for(tinyxml2::XMLElement *e2 = e1->FirstChildElement(); e2; e2 = e2->NextSiblingElement()) { std::string tag2(e2->Value() ? e2->Value() : ""); if(tag2 != "item") continue; std::string itemName(e2->GetText()); horizontalHeader.push_back(itemName); } } else if(tag1 == "row") { rows.resize(rows.size()+1); std::string rowHeader = xmlutils::getAttrStr(e1, "label", boost::lexical_cast<std::string>(rows.size())); verticalHeader.push_back(rowHeader); for(tinyxml2::XMLElement *e2 = e1->FirstChildElement(); e2; e2 = e2->NextSiblingElement()) { std::string tag2(e2->Value() ? e2->Value() : ""); if(tag2 != "item") continue; TableItem item; item.text = std::string(e2->GetText() ? e2->GetText() : ""); item.editable = xmlutils::getAttrBool(e2, "editable", true); rows[rows.size()-1].push_back(item); } } else continue; } show_horizontal_header = xmlutils::getAttrBool(e, "show-horizontal-header", true); show_vertical_header = xmlutils::getAttrBool(e, "show-vertical-header", false); autosize_horizontal_header = xmlutils::getAttrBool(e, "autosize-horizontal-header", false); autosize_vertical_header = xmlutils::getAttrBool(e, "autosize-vertical-header", true); show_grid = xmlutils::getAttrBool(e, "show-grid", true); editable = xmlutils::getAttrBool(e, "editable", true); sortable = xmlutils::getAttrBool(e, "sortable", false); onCellActivate = xmlutils::getAttrStr(e, "on-cell-activate", ""); onSelectionChange = xmlutils::getAttrStr(e, "on-selection-change", ""); std::string select_mode_str = xmlutils::getAttrStr(e, "selection-mode", "item"); selectionMode = QAbstractItemView::SingleSelection; if(select_mode_str == "item") selectionBehavior = QAbstractItemView::SelectItems; else if(select_mode_str == "row") selectionBehavior = QAbstractItemView::SelectRows; else if(select_mode_str == "column") selectionBehavior = QAbstractItemView::SelectColumns; else throw std::range_error("selection-mode must be one of: 'item', 'row', 'column'"); onKeyPress = xmlutils::getAttrStr(e, "on-key-press", ""); }