spec/util_encodings_spec.lua
author Kim Alvefur <zash@zash.se>
Mon, 12 Dec 2022 07:07:13 +0100
branch0.12
changeset 12803 3784a8ce0596
parent 8376 af7b41a0ec9e
permissions -rw-r--r--
Merge 0.11->0.12
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8239
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
     1
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
     2
local encodings = require "util.encodings";
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
     3
local utf8 = assert(encodings.utf8, "no encodings.utf8 module");
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
     4
8370
60eb22fd21b8 spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents: 8239
diff changeset
     5
describe("util.encodings", function ()
60eb22fd21b8 spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents: 8239
diff changeset
     6
	describe("#encode()", function()
60eb22fd21b8 spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents: 8239
diff changeset
     7
		it("should work", function ()
60eb22fd21b8 spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents: 8239
diff changeset
     8
			assert.is.equal(encodings.base64.encode(""), "");
8374
09a1ce618ad0 spec/util.encodings: Fix syntax
Kim Alvefur <zash@zash.se>
parents: 8373
diff changeset
     9
			assert.is.equal(encodings.base64.encode('coucou'), "Y291Y291");
8370
60eb22fd21b8 spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents: 8239
diff changeset
    10
			assert.is.equal(encodings.base64.encode("\0\0\0"), "AAAA");
8375
872efae6e222 spec/util.encodings: Test an UTF-8 sequence
Kim Alvefur <zash@zash.se>
parents: 8374
diff changeset
    11
			assert.is.equal(encodings.base64.encode("\255\255\255"), "////");
8370
60eb22fd21b8 spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents: 8239
diff changeset
    12
		end);
60eb22fd21b8 spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents: 8239
diff changeset
    13
	end);
60eb22fd21b8 spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents: 8239
diff changeset
    14
	describe("#decode()", function()
60eb22fd21b8 spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents: 8239
diff changeset
    15
		it("should work", function ()
60eb22fd21b8 spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents: 8239
diff changeset
    16
			assert.is.equal(encodings.base64.decode(""), "");
8376
af7b41a0ec9e spec/util.encodings: Test a lonly padding (can appear like this in SASL)
Kim Alvefur <zash@zash.se>
parents: 8375
diff changeset
    17
			assert.is.equal(encodings.base64.decode("="), "");
8374
09a1ce618ad0 spec/util.encodings: Fix syntax
Kim Alvefur <zash@zash.se>
parents: 8373
diff changeset
    18
			assert.is.equal(encodings.base64.decode('Y291Y291'), "coucou");
8370
60eb22fd21b8 spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents: 8239
diff changeset
    19
			assert.is.equal(encodings.base64.decode("AAAA"), "\0\0\0");
8375
872efae6e222 spec/util.encodings: Test an UTF-8 sequence
Kim Alvefur <zash@zash.se>
parents: 8374
diff changeset
    20
			assert.is.equal(encodings.base64.decode("////"), "\255\255\255");
8370
60eb22fd21b8 spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents: 8239
diff changeset
    21
		end);
60eb22fd21b8 spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents: 8239
diff changeset
    22
	end);
60eb22fd21b8 spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents: 8239
diff changeset
    23
end);
8239
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    24
describe("util.encodings.utf8", function()
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    25
	describe("#valid()", function()
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    26
		it("should work", function()
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    27
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    28
			for line in io.lines("spec/utf8_sequences.txt") do
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    29
				local data = line:match(":%s*([^#]+)"):gsub("%s+", ""):gsub("..", function (c) return string.char(tonumber(c, 16)); end)
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    30
				local expect = line:match("(%S+):");
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    31
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    32
				assert(expect == "pass" or expect == "fail", "unknown expectation: "..line:match("^[^:]+"));
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    33
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    34
				local valid = utf8.valid(data);
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    35
				assert.is.equal(valid, utf8.valid(data.." "));
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    36
				assert.is.equal(valid, expect == "pass", line);
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    37
			end
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    38
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    39
		end);
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    40
	end);
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    41
end);