Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cassert>
- #include <cstdint>
- #include <sstream>
- #include <string>
- using Int = std::int32_t;
- bool deserialize(const std::string &s, Int expected_opcode, Int expected_item_id, Int expected_item_count) noexcept
- {
- std::string delimeter = " ";
- auto s1 = s.substr(1, s.find(delimeter));
- auto s2 = s.substr(2, s.find(delimeter));
- auto item_id = static_cast<Int>(std::stoi(s1));
- auto item_count = static_cast<Int>(std::stoi(s2));
- std::istringstream error_check1(s1);
- std::istringstream error_check2(s2);
- if (!error_check1.eof() || !error_check2.eof())
- {
- return false;
- }
- if (item_id != expected_item_id || item_count != expected_item_count)
- {
- return false;
- }
- return true;
- }
- int main()
- {
- assert(deserialize("123 456 789\0", 123, 456, 789));
- assert(!deserialize("123 456 789", 123, 456, 789));
- assert(!deserialize("", -1, -1, -1));
- assert(!deserialize("\0", -1, -1, -1));
- assert(!deserialize("123", 123, -1, -1));
- assert(!deserialize("123\0", 123, -1, -1));
- assert(!deserialize("123 456\0", 123, 456, -1));
- assert(!deserialize("123 456", 123, 456, -1));
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement