Initial commit: Pi calculation benchmark with 34 languages
- Added implementations for: bash, brainfuck, c, cpp, crystal, csharp, d, dart, elixir, erlang, fortran, go, haskell, java, javascript, julia, kotlin, objective-c, scala, typescript, lua, nim, odin, perl, php, python, r, ruby, rust, swift, zig, assembly, vimscript, wolfram - All implementations use Machin's formula: π/4 = 4*arctan(1/5) - arctan(1/239) - Build system with ./build.sh, test system with ./test.sh - Performance testing with ./run_all.sh - Comprehensive README.md explaining performance differences - Test framework verifies correctness against known π values
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
#!/usr/bin/env lua
|
||||
-- Unit tests for Lua pi calculation using busted
|
||||
|
||||
local SCRIPT_PATH = "/Users/einand/Code/test/lua/print_hej.lua"
|
||||
|
||||
local function run_script(...)
|
||||
local args = {...}
|
||||
local cmd = "lua " .. SCRIPT_PATH
|
||||
for _, arg in ipairs(args) do
|
||||
cmd = cmd .. " " .. tostring(arg)
|
||||
end
|
||||
|
||||
local handle = io.popen(cmd, "r")
|
||||
local result = handle:read("*a")
|
||||
handle:close()
|
||||
|
||||
-- Trim newline
|
||||
result = result:gsub("\n$", "")
|
||||
return result
|
||||
end
|
||||
|
||||
describe("Pi calculation", function()
|
||||
it("calculates 10 decimals", function()
|
||||
local result = run_script(10)
|
||||
local expected = "3.1415926535"
|
||||
assert.are.equal(expected, result)
|
||||
end)
|
||||
|
||||
it("calculates 5 decimals", function()
|
||||
local result = run_script(5)
|
||||
local expected = "3.14159"
|
||||
assert.are.equal(expected, result)
|
||||
end)
|
||||
|
||||
it("calculates 1 decimal", function()
|
||||
local result = run_script(1)
|
||||
local expected = "3.1"
|
||||
assert.are.equal(expected, result)
|
||||
end)
|
||||
|
||||
it("calculates 100 decimals", function()
|
||||
local result = run_script(100)
|
||||
local expected = "3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679"
|
||||
assert.are.equal(expected, result)
|
||||
end)
|
||||
|
||||
it("calculates default 100 decimals", function()
|
||||
local result = run_script()
|
||||
local expected = "3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679"
|
||||
assert.are.equal(expected, result)
|
||||
end)
|
||||
|
||||
it("calculates 10000 decimals", function()
|
||||
local result = run_script(10000)
|
||||
-- Check length: "3." + 10000 digits = 10002 characters
|
||||
assert.are.equal(10002, #result)
|
||||
assert.is_true(string.sub(result, 1, 7) == "3.14159")
|
||||
end)
|
||||
end)
|
||||
Reference in New Issue
Block a user