Annotate

spec/util_format_spec.lua @ 11661:735b8f4a6d7e

net.http: Send entire HTTP request header as one write When opportunistic writes are enabled this reduces the number of syscalls and TCP packets sent on the wire. Experiments with TCP Fast Open made this even more obvious. That table trick probably wasn't as efficient. Lua generates bytecode for a table with zero array slots and space for two entries in the hash part, plus code to set [2] and [4]. I didn't verify but I suspect it would have had to resize the table when setting [1] and [3], although probably only once. Concatenating the strings directly in Lua is easier to read and involves no extra table or function call.
author Kim Alvefur <zash@zash.se>
date Thu, 08 Jul 2021 18:21:59 +0200
parent 11644:fc1b8fe94d04
child 12031:87bc26f23d9b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8383
d967d6f2ad00 util.format: Move tests to spec/
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1 local format = require "util.format".format;
d967d6f2ad00 util.format: Move tests to spec/
Kim Alvefur <zash@zash.se>
parents:
diff changeset
2
d967d6f2ad00 util.format: Move tests to spec/
Kim Alvefur <zash@zash.se>
parents:
diff changeset
3 describe("util.format", function()
d967d6f2ad00 util.format: Move tests to spec/
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4 describe("#format()", function()
d967d6f2ad00 util.format: Move tests to spec/
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5 it("should work", function()
8619
b96b0141cb61 util.format: Fix tests to have expected value first
Kim Alvefur <zash@zash.se>
parents: 8383
diff changeset
6 assert.equal("hello", format("%s", "hello"));
11644
fc1b8fe94d04 util.format: Change formatting of nil values to avoid looking like XML
Kim Alvefur <zash@zash.se>
parents: 11638
diff changeset
7 assert.equal("(nil)", format("%s"));
fc1b8fe94d04 util.format: Change formatting of nil values to avoid looking like XML
Kim Alvefur <zash@zash.se>
parents: 11638
diff changeset
8 assert.equal("(nil)", format("%d"));
fc1b8fe94d04 util.format: Change formatting of nil values to avoid looking like XML
Kim Alvefur <zash@zash.se>
parents: 11638
diff changeset
9 assert.equal("(nil)", format("%q"));
fc1b8fe94d04 util.format: Change formatting of nil values to avoid looking like XML
Kim Alvefur <zash@zash.se>
parents: 11638
diff changeset
10 assert.equal(" [(nil)]", format("", nil));
8619
b96b0141cb61 util.format: Fix tests to have expected value first
Kim Alvefur <zash@zash.se>
parents: 8383
diff changeset
11 assert.equal("true", format("%s", true));
b96b0141cb61 util.format: Fix tests to have expected value first
Kim Alvefur <zash@zash.se>
parents: 8383
diff changeset
12 assert.equal("[true]", format("%d", true));
b96b0141cb61 util.format: Fix tests to have expected value first
Kim Alvefur <zash@zash.se>
parents: 8383
diff changeset
13 assert.equal("% [true]", format("%%", true));
9693
6ed0d6224d64 util.format: Serialize values for the %q format
Kim Alvefur <zash@zash.se>
parents: 9656
diff changeset
14 assert.equal("{ }", format("%q", { }));
10034
4fca92d60040 util.format: Handle formats expecting an integer in Lua 5.3+ (fixes #1371)
Kim Alvefur <zash@zash.se>
parents: 9693
diff changeset
15 assert.equal("[1.5]", format("%d", 1.5));
10035
386f085820e6 util.format: Handle integer formats the same way on Lua versions without integer support
Kim Alvefur <zash@zash.se>
parents: 10034
diff changeset
16 assert.equal("[7.3786976294838e+19]", format("%d", 73786976294838206464));
8383
d967d6f2ad00 util.format: Move tests to spec/
Kim Alvefur <zash@zash.se>
parents:
diff changeset
17 end);
11638
5f4a657136bc util.format: Escape ASCII control characters in output
Kim Alvefur <zash@zash.se>
parents: 10035
diff changeset
18
5f4a657136bc util.format: Escape ASCII control characters in output
Kim Alvefur <zash@zash.se>
parents: 10035
diff changeset
19 it("escapes ascii control stuff", function ()
5f4a657136bc util.format: Escape ASCII control characters in output
Kim Alvefur <zash@zash.se>
parents: 10035
diff changeset
20 assert.equal("␁", format("%s", "\1"));
5f4a657136bc util.format: Escape ASCII control characters in output
Kim Alvefur <zash@zash.se>
parents: 10035
diff changeset
21 end);
5f4a657136bc util.format: Escape ASCII control characters in output
Kim Alvefur <zash@zash.se>
parents: 10035
diff changeset
22
8383
d967d6f2ad00 util.format: Move tests to spec/
Kim Alvefur <zash@zash.se>
parents:
diff changeset
23 end);
d967d6f2ad00 util.format: Move tests to spec/
Kim Alvefur <zash@zash.se>
parents:
diff changeset
24 end);