mirror of
https://github.com/nim-lang/Nim.git
synced 2026-04-21 14:55:24 +00:00
move rest of tests to testament (#16140)
* move rest of tests to testament * Update tests/stdlib/tsums.nim
This commit is contained in:
@@ -264,44 +264,3 @@ proc editDistanceAscii*(a, b: string): int {.noSideEffect.} =
|
||||
if x > c3: x = c3
|
||||
row[p] = x
|
||||
result = row[e]
|
||||
|
||||
|
||||
when isMainModule:
|
||||
doAssert editDistance("", "") == 0
|
||||
doAssert editDistance("kitten", "sitting") == 3 # from Wikipedia
|
||||
doAssert editDistance("flaw", "lawn") == 2 # from Wikipedia
|
||||
|
||||
doAssert editDistance("привет", "превет") == 1
|
||||
doAssert editDistance("Åge", "Age") == 1
|
||||
# editDistance, one string is longer in bytes, but shorter in rune length
|
||||
# first string: 4 bytes, second: 6 bytes, but only 3 runes
|
||||
doAssert editDistance("aaaa", "×××") == 4
|
||||
|
||||
block veryLongStringEditDistanceTest:
|
||||
const cap = 256
|
||||
var
|
||||
s1 = newStringOfCap(cap)
|
||||
s2 = newStringOfCap(cap)
|
||||
while len(s1) < cap:
|
||||
s1.add 'a'
|
||||
while len(s2) < cap:
|
||||
s2.add 'b'
|
||||
doAssert editDistance(s1, s2) == cap
|
||||
|
||||
block combiningCodePointsEditDistanceTest:
|
||||
const s = "A\xCC\x8Age"
|
||||
doAssert editDistance(s, "Age") == 1
|
||||
|
||||
doAssert editDistanceAscii("", "") == 0
|
||||
doAssert editDistanceAscii("kitten", "sitting") == 3 # from Wikipedia
|
||||
doAssert editDistanceAscii("flaw", "lawn") == 2 # from Wikipedia
|
||||
|
||||
|
||||
assert(editDistance("prefix__hallo_suffix", "prefix__hallo_suffix") == 0)
|
||||
assert(editDistance("prefix__hallo_suffix", "prefix__hallo_suffi1") == 1)
|
||||
assert(editDistance("prefix__hallo_suffix", "prefix__HALLO_suffix") == 5)
|
||||
assert(editDistance("prefix__hallo_suffix", "prefix__ha_suffix") == 3)
|
||||
assert(editDistance("prefix__hallo_suffix", "prefix") == 14)
|
||||
assert(editDistance("prefix__hallo_suffix", "suffix") == 14)
|
||||
assert(editDistance("prefix__hallo_suffix", "prefix__hao_suffix") == 2)
|
||||
assert(editDistance("main", "malign") == 2)
|
||||
|
||||
@@ -60,27 +60,3 @@ runnableExamples:
|
||||
const data = [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||
doAssert sumKbn(data) == 45
|
||||
doAssert sumPairs(data) == 45
|
||||
|
||||
|
||||
when isMainModule:
|
||||
from math import pow
|
||||
|
||||
var epsilon = 1.0
|
||||
while 1.0 + epsilon != 1.0:
|
||||
epsilon /= 2.0
|
||||
let data = @[1.0, epsilon, -epsilon]
|
||||
assert sumKbn(data) == 1.0
|
||||
assert sumPairs(data) != 1.0 # known to fail
|
||||
assert (1.0 + epsilon) - epsilon != 1.0
|
||||
|
||||
var tc1: seq[float]
|
||||
for n in 1 .. 1000:
|
||||
tc1.add 1.0 / n.float
|
||||
assert sumKbn(tc1) == 7.485470860550345
|
||||
assert sumPairs(tc1) == 7.485470860550345
|
||||
|
||||
var tc2: seq[float]
|
||||
for n in 1 .. 1000:
|
||||
tc2.add pow(-1.0, n.float) / n.float
|
||||
assert sumKbn(tc2) == -0.6926474305598203
|
||||
assert sumPairs(tc2) == -0.6926474305598204
|
||||
|
||||
@@ -36,23 +36,3 @@ macro with*(arg: typed; calls: varargs[untyped]): untyped =
|
||||
|
||||
result = newNimNode(nnkStmtList, arg)
|
||||
underscoredCalls(result, calls, arg)
|
||||
|
||||
when isMainModule:
|
||||
type
|
||||
Foo = object
|
||||
col, pos: string
|
||||
name: string
|
||||
|
||||
proc setColor(f: var Foo; r, g, b: int) = f.col = $(r, g, b)
|
||||
proc setPosition(f: var Foo; x, y: float) = f.pos = $(x, y)
|
||||
|
||||
var f: Foo
|
||||
with(f, setColor(2, 3, 4), setPosition(0.0, 1.0))
|
||||
echo f
|
||||
|
||||
f = Foo()
|
||||
with f:
|
||||
col = $(2, 3, 4)
|
||||
pos = $(0.0, 1.0)
|
||||
_.name = "bar"
|
||||
echo f
|
||||
|
||||
@@ -72,47 +72,3 @@ proc wrapWords*(s: string, maxLineWidth = 80,
|
||||
for k in i..<j: result.add(s[k])
|
||||
#lastSep.setLen(0)
|
||||
i = j
|
||||
|
||||
when isMainModule:
|
||||
|
||||
when true:
|
||||
let
|
||||
inp = """ this is a long text -- muchlongerthan10chars and here
|
||||
it goes"""
|
||||
outp = " this is a\nlong text\n--\nmuchlongerthan10chars\nand here\nit goes"
|
||||
doAssert wrapWords(inp, 10, false) == outp
|
||||
|
||||
let
|
||||
longInp = """ThisIsOneVeryLongStringWhichWeWillSplitIntoEightSeparatePartsNow"""
|
||||
longOutp = "ThisIsOn\neVeryLon\ngStringW\nhichWeWi\nllSplitI\nntoEight\nSeparate\nPartsNow"
|
||||
doAssert wrapWords(longInp, 8, true) == longOutp
|
||||
|
||||
# test we don't break Umlauts into invalid bytes:
|
||||
let fies = "äöüöäöüöäöüöäöüööäöüöäößßßßüöäößßßßßß"
|
||||
let fiesRes = "ä\nö\nü\nö\nä\nö\nü\nö\nä\nö\nü\nö\nä\nö\nü\nö\nö\nä\nö\nü\nö\nä\nö\nß\nß\nß\nß\nü\nö\nä\nö\nß\nß\nß\nß\nß\nß"
|
||||
doAssert wrapWords(fies, 1, true) == fiesRes
|
||||
|
||||
let longlongword = """abc uitdaeröägfßhydüäpydqfü,träpydqgpmüdträpydföägpydörztdüöäfguiaeowäzjdtrüöäp psnrtuiydrözenrüöäpyfdqazpesnrtulocjtüö
|
||||
äzydgyqgfqfgprtnwjlcydkqgfüöezmäzydydqüüöäpdtrnvwfhgckdumböäpydfgtdgfhtdrntdrntydfogiayqfguiatrnydrntüöärtniaoeydfgaoeiqfglwcßqfgxvlcwgtfhiaoen
|
||||
rsüöäapmböäptdrniaoydfglckqfhouenrtsüöäptrniaoeyqfgulocfqclgwxßqflgcwßqfxglcwrniatrnmüböäpmöäbpümöäbpüöämpbaoestnriaesnrtdiaesrtdniaesdrtnaetdr
|
||||
iaoenvlcyfglwckßqfgvwkßqgfvlwkßqfgvlwckßqvlwkgfUIαοιαοιαχολωχσωχνωκψρχκψρτιεαοσηζϵηζιοεννκεωνιαλωσωκνκψρκγτφγτχκγτεκργτιχνκιωχσιλωσλωχξλξλξωχωχ
|
||||
ξχλωωχαοεοιαεοαεοιαεοαεοιαοεσναοεκνρκψγκψφϵιηαααοε"""
|
||||
let longlongwordRes = """
|
||||
abc uitdaeröägfßhydüäpydqfü,träpydqgpmüdträpydföägpydörztdüöäfguiaeowäzjdtrüöäp
|
||||
psnrtuiydrözenrüöäpyfdqazpesnrtulocjtüöäzydgyqgfqfgprtnwjlcydkqgfüöezmäzydydqüü
|
||||
öäpdtrnvwfhgckdumböäpydfgtdgfhtdrntdrntydfogiayqfguiatrnydrntüöärtniaoeydfgaoeiq
|
||||
fglwcßqfgxvlcwgtfhiaoenrsüöäapmböäptdrniaoydfglckqfhouenrtsüöäptrniaoeyqfgulocf
|
||||
qclgwxßqflgcwßqfxglcwrniatrnmüböäpmöäbpümöäbpüöämpbaoestnriaesnrtdiaesrtdniaesdr
|
||||
tnaetdriaoenvlcyfglwckßqfgvwkßqgfvlwkßqfgvlwckßqvlwkgfUIαοιαοιαχολωχσωχνωκψρχκψ
|
||||
ρτιεαοσηζϵηζιοεννκεωνιαλωσωκνκψρκγτφγτχκγτεκργτιχνκιωχσιλωσλωχξλξλξωχωχ
|
||||
ξχλωωχαοεοιαεοαεοιαεοαεοιαοεσναοεκνρκψγκψφϵιηαααοε"""
|
||||
doAssert wrapWords(longlongword) == longlongwordRes
|
||||
|
||||
# bug #14579
|
||||
const input60 = """
|
||||
This string is wrapped to 60 characters. If we call
|
||||
wrapwords on it it will be re-wrapped to 80 characters.
|
||||
"""
|
||||
const input60Res = """This string is wrapped to 60 characters. If we call wrapwords on it it will be
|
||||
re-wrapped to 80 characters."""
|
||||
doAssert wrapWords(input60) == input60Res
|
||||
|
||||
Reference in New Issue
Block a user