From 46901c04955ea94c746ae96d09734143af63c51d Mon Sep 17 00:00:00 2001 From: Yuval Adam <_@yuv.al> Date: Tue, 13 Mar 2018 21:47:50 +0200 Subject: Add skeleton support for RGBA, datetime and unit parsing --- tests/samples/misim.sample | 1 + tests/test_parse.py | 13 +++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 tests/samples/misim.sample (limited to 'tests') diff --git a/tests/samples/misim.sample b/tests/samples/misim.sample new file mode 100644 index 0000000..0c7d7d0 --- /dev/null +++ b/tests/samples/misim.sample @@ -0,0 +1 @@ +/wEPDwUKLTUzMjA4OTkwMA9kFgJmD2QWAgIBD2QWBgIBDxYCHglpbm5lcmh0bWwFKdeq15HXmdei15Qg157Xp9eV15XXoNeqIC0g16DXltenINeZ16nXmdeoZAIDDw8WAh4HVmlzaWJsZWhkZAIFD2QWBAIDDw8WDB4HTWF4RGF0ZQYAMFBvm4fViB4MU2VsZWN0ZWREYXRlZB4RX3NraXBNTVZhbGlkYXRpb25oHhVFbmFibGVFbWJlZGRlZFNjcmlwdHNnHhxFbmFibGVFbWJlZGRlZEJhc2VTdHlsZXNoZWV0Zx4SUmVzb2x2ZWRSZW5kZXJNb2RlCylzVGVsZXJpay5XZWIuVUkuUmVuZGVyTW9kZSwgVGVsZXJpay5XZWIuVUksIFZlcnNpb249MjAxNS4zLjExMTEuNDAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49MTIxZmFlNzgxNjViYTNkNAFkFgRmDxQrAAgPFhIeDUxhYmVsQ3NzQ2xhc3MFB3JpTGFiZWweBFRleHRkHwZnHwIGADBQb5uH1YgeBFNraW4FDk9mZmljZTIwMTBCbHVlHwcLKwQBHhdFbmFibGVBamF4U2tpblJlbmRlcmluZ2gfBWceEUVuYWJsZUFyaWFTdXBwb3J0aGQWCB4FV2lkdGgbAAAAAAAAWUAHAAAAHgpSZXNpemVNb2RlCylzVGVsZXJpay5XZWIuVUkuUmVzaXplTW9kZSwgVGVsZXJpay5XZWIuVUksIFZlcnNpb249MjAxNS4zLjExMTEuNDAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49MTIxZmFlNzgxNjViYTNkNAAeCENzc0NsYXNzBRFyaVRleHRCb3ggcmlIb3Zlch4EXyFTQgKCAhYIHw0bAAAAAAAAWUAHAAAAHw4LKwUAHw8FEXJpVGV4dEJveCByaUVycm9yHxACggIWCB8NGwAAAAAAAFlABwAAAB8OCysFAB8PBRNyaVRleHRCb3ggcmlGb2N1c2VkHxACggIWBh8NGwAAAAAAAFlABwAAAB8PBRNyaVRleHRCb3ggcmlFbmFibGVkHxACggIWCB8NGwAAAAAAAFlABwAAAB8OCysFAB8PBRRyaVRleHRCb3ggcmlEaXNhYmxlZB8QAoICFggfDRsAAAAAAABZQAcAAAAfDgsrBQAfDwURcmlUZXh0Qm94IHJpRW1wdHkfEAKCAhYIHw0bAAAAAAAAWUAHAAAAHw4LKwUAHw8FEHJpVGV4dEJveCByaVJlYWQfEAKCAmQCAg8UKwANDxYYBQNFUlNoBQ1DdWx0dXJlSW5mb0lEKCltU3lzdGVtLkdsb2JhbGl6YXRpb24uQ3VsdHVyZUluZm8sIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OQVoZS1JTAUETWF4RAYAMFBvm4fViAUNU2VsZWN0ZWREYXRlcw8FkAFUZWxlcmlrLldlYi5VSS5DYWxlbmRhci5Db2xsZWN0aW9ucy5EYXRlVGltZUNvbGxlY3Rpb24sIFRlbGVyaWsuV2ViLlVJLCBWZXJzaW9uPTIwMTUuMy4xMTExLjQwLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTEyMWZhZTc4MTY1YmEzZDQUKwAABRZGYXN0TmF2aWdhdGlvblByZXZUZXh0BQI8PAULU3BlY2lhbERheXMPBZMBVGVsZXJpay5XZWIuVUkuQ2FsZW5kYXIuQ29sbGVjdGlvbnMuQ2FsZW5kYXJEYXlDb2xsZWN0aW9uLCBUZWxlcmlrLldlYi5VSSwgVmVyc2lvbj0yMDE1LjMuMTExMS40MCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj0xMjFmYWU3ODE2NWJhM2Q0FCsAARYEBQNJU1ILKYEBVGVsZXJpay5XZWIuVUkuQ2FsZW5kYXIuUmVjdXJyaW5nRXZlbnRzLCBUZWxlcmlrLldlYi5VSSwgVmVyc2lvbj0yMDE1LjMuMTExMS40MCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj0xMjFmYWU3ODE2NWJhM2Q0EAUJSXRlbVN0eWxlDwV3U3lzdGVtLldlYi5VSS5XZWJDb250cm9scy5UYWJsZUl0ZW1TdHlsZSwgU3lzdGVtLldlYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EWBB4JQmFja0NvbG9yCe/Es/8fEAIIBQ9SZW5kZXJJbnZpc2libGVnBQ1DdWx0dXJlTmFtZUlEBQVoZS1JTAULVGl0bGVGb3JtYXQFCXl5eXlNTU1NIAUJQ3VsdHVyZUlEAo0IBRZGYXN0TmF2aWdhdGlvbk5leHRUZXh0BQI+PgURRW5hYmxlTXVsdGlTZWxlY3RoDxYMHwVnHwZnHwcLKwQBHwoFDk9mZmljZTIwMTBCbHVlHwtoHwxoZGQWBB8PBQtyY01haW5UYWJsZR8QAgIWBB8PBQxyY090aGVyTW9udGgfEAICZBYEHw8FCnJjU2VsZWN0ZWQfEAICZBYEHw8FCnJjRGlzYWJsZWQfEAICFgQfDwUMcmNPdXRPZlJhbmdlHxACAhYEHw8FCXJjV2Vla2VuZB8QAgIWBB8PBQdyY0hvdmVyHxACAhYEHw8FOFJhZENhbGVuZGFyTW9udGhWaWV3IFJhZENhbGVuZGFyTW9udGhWaWV3X09mZmljZTIwMTBCbHVlHxACAhYEHw8FCXJjVmlld1NlbB8QAgJkAgUPDxYGHwVnHwZnHwcLKwQBZBYEZg8UKwAIDxYQHwgFB3JpTGFiZWwfCWQfBmcfBwsrBAEfCgUOT2ZmaWNlMjAxMEJsdWUfC2gfBWcfDGhkFggfDRsAAAAAAABZQAcAAAAfDgsrBQAfDwURcmlUZXh0Qm94IHJpSG92ZXIfEAKCAhYIHw0bAAAAAAAAWUAHAAAAHw4LKwUAHw8FEXJpVGV4dEJveCByaUVycm9yHxACggIWCB8NGwAAAAAAAFlABwAAAB8OCysFAB8PBRNyaVRleHRCb3ggcmlGb2N1c2VkHxACggIWBh8NGwAAAAAAAFlABwAAAB8PBRNyaVRleHRCb3ggcmlFbmFibGVkHxACggIWCB8NGwAAAAAAAFlABwAAAB8OCysFAB8PBRRyaVRleHRCb3ggcmlEaXNhYmxlZB8QAoICFggfDRsAAAAAAABZQAcAAAAfDgsrBQAfDwURcmlUZXh0Qm94IHJpRW1wdHkfEAKCAhYIHw0bAAAAAAAAWUAHAAAAHw4LKwUAHw8FEHJpVGV4dEJveCByaVJlYWQfEAKCAmQCAg8UKwANDxYWBQNFUlNoBQ1DdWx0dXJlSW5mb0lEKCsGBWhlLUlMBQ1TZWxlY3RlZERhdGVzDwWQAVRlbGVyaWsuV2ViLlVJLkNhbGVuZGFyLkNvbGxlY3Rpb25zLkRhdGVUaW1lQ29sbGVjdGlvbiwgVGVsZXJpay5XZWIuVUksIFZlcnNpb249MjAxNS4zLjExMTEuNDAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49MTIxZmFlNzgxNjViYTNkNBQrAAAFFkZhc3ROYXZpZ2F0aW9uUHJldlRleHQFAjw8BQtTcGVjaWFsRGF5cw8FkwFUZWxlcmlrLldlYi5VSS5DYWxlbmRhci5Db2xsZWN0aW9ucy5DYWxlbmRhckRheUNvbGxlY3Rpb24sIFRlbGVyaWsuV2ViLlVJLCBWZXJzaW9uPTIwMTUuMy4xMTExLjQwLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTEyMWZhZTc4MTY1YmEzZDQUKwABFgQFA0lTUgsrBxAFCUl0ZW1TdHlsZQ8Fd1N5c3RlbS5XZWIuVUkuV2ViQ29udHJvbHMuVGFibGVJdGVtU3R5bGUsIFN5c3RlbS5XZWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iMDNmNWY3ZjExZDUwYTNhFgQfEQnvxLP/HxACCAUPUmVuZGVySW52aXNpYmxlZwUNQ3VsdHVyZU5hbWVJRAUFaGUtSUwFC1RpdGxlRm9ybWF0BQl5eXl5TU1NTSAFCUN1bHR1cmVJRAKNCAUWRmFzdE5hdmlnYXRpb25OZXh0VGV4dAUCPj4FEUVuYWJsZU11bHRpU2VsZWN0aA8WDB8FZx8GZx8HCysEAR8KBQ5PZmZpY2UyMDEwQmx1ZR8LaB8MaGRkFgQfDwULcmNNYWluVGFibGUfEAICFgQfDwUMcmNPdGhlck1vbnRoHxACAmQWBB8PBQpyY1NlbGVjdGVkHxACAmQWBB8PBQpyY0Rpc2FibGVkHxACAhYEHw8FDHJjT3V0T2ZSYW5nZR8QAgIWBB8PBQlyY1dlZWtlbmQfEAICFgQfDwUHcmNIb3Zlch8QAgIWBB8PBThSYWRDYWxlbmRhck1vbnRoVmlldyBSYWRDYWxlbmRhck1vbnRoVmlld19PZmZpY2UyMDEwQmx1ZR8QAgIWBB8PBQlyY1ZpZXdTZWwfEAICZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WBgUtY3RsMDAkQ29udGVudFVzZXJzUGFnZSRDYWxlbmRhckRhdGVIYW5wYWthdFRaBTZjdGwwMCRDb250ZW50VXNlcnNQYWdlJENhbGVuZGFyRGF0ZUhhbnBha2F0VFokY2FsZW5kYXIFNmN0bDAwJENvbnRlbnRVc2Vyc1BhZ2UkQ2FsZW5kYXJEYXRlSGFucGFrYXRUWiRjYWxlbmRhcgUvY3RsMDAkQ29udGVudFVzZXJzUGFnZSRDYWxlbmRhckRhdGVIb3phYXREYXJrb24FOGN0bDAwJENvbnRlbnRVc2Vyc1BhZ2UkQ2FsZW5kYXJEYXRlSG96YWF0RGFya29uJGNhbGVuZGFyBThjdGwwMCRDb250ZW50VXNlcnNQYWdlJENhbGVuZGFyRGF0ZUhvemFhdERhcmtvbiRjYWxlbmRhcmsBxKDm+mQUwIO5UbPwRlbxedWN diff --git a/tests/test_parse.py b/tests/test_parse.py index cb0a354..56f36c9 100644 --- a/tests/test_parse.py +++ b/tests/test_parse.py @@ -1,5 +1,6 @@ import pytest +from datetime import datetime from os import walk from os.path import join from viewstate import * @@ -40,6 +41,10 @@ class TestParse(object): vs = ViewState(raw=b'\xff\x01\n\x01\x02') assert vs.decode() == 'Color: unknown' # all colors are unknown for now + def test_rgba(self): + vs = ViewState(raw=b'\xff\x01\x09\x10\x20\x30\x40') + assert vs.decode() == 'RGBA(16,32,48,64)' + def test_formatted_string(self): vs = ViewState() s1 = 'System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' @@ -47,6 +52,14 @@ class TestParse(object): vs.raw = b'\xff\x01()' + bytes([len(s1)]) + s1.encode() + bytes([len(s2)]) + s2.encode() assert vs.decode() == 'Formatted string: {} {}'.format(s2, s1) + @pytest.mark.skip(reason='Datetime parsing not yet supported') + def test_datetime(self): + vs = ViewState() + vs.raw = b'\xff\x01\x06\x000Po\x9b\x87\xd5\x88' + assert vs.decode() == datetime(2018, 3, 11, 22) + vs.raw = b'\xff\x01\x06\x00\xf0\xb9\x99d\x88\xd5\x88' + assert vs.decode() == datetime(2018, 3, 12, 22) + def test_complex_pair(self): vs = ViewState() vs.raw = b'\xff\x01\x0f\x67\x0f\x68\x66' -- cgit v1.3.1