aboutsummaryrefslogtreecommitdiff
path: root/src/pkg/strings/strings_test.go
AgeCommit message (Collapse)Author
2014-04-21strings: fix off-by-one error in testgo1.3beta1Rui Ueyama
Previously it would panic because of out-of-bound access if s1 is longer than s2. LGTM=iant R=golang-codereviews, iant CC=golang-codereviews https://golang.org/cl/90110043
2014-03-19strings, bytes: ReadAt should not mutate receiverRui Ueyama
CL 77580046 caused a data race issue with tests that assumes ReadAt does not mutate receiver. This patch partially revert CL 77580046 to fix it. LGTM=bradfitz R=golang-codereviews, bradfitz CC=golang-codereviews https://golang.org/cl/77900043
2014-03-19strings, bytes: fix Reader.UnreadRuneRui Ueyama
UnreadRune should return an error if previous operation is not ReadRune. Fixes #7579. LGTM=bradfitz R=golang-codereviews, bradfitz CC=golang-codereviews https://golang.org/cl/77580046
2013-12-20bytes, strings: improve Title test coverage by adding cases with underscore ↵Shawn Smith
and unicode line separator R=golang-codereviews, gobot, r CC=golang-codereviews https://golang.org/cl/42310045
2013-08-09strings: add test for CountPieter Droogendijk
R=golang-dev, bradfitz CC=golang-dev https://golang.org/cl/12541050
2013-08-06strings: add IndexByte benchmarkBrad Fitzpatrick
Like existing Index, IndexRune, IndexHardN, etc. R=golang-dev, khr CC=golang-dev https://golang.org/cl/12486044
2013-03-06strings: remove allocations in Split(s, "")Ewan Chou
BenchmarkSplit1 77984460 24131380 -69.06% R=golang-dev, rsc, minux.ma, dave, extemporalgenome CC=golang-dev https://golang.org/cl/7458043
2013-02-28all: fix a few more printf arg bugs found by go vetRob Pike
R=golang-dev, iant CC=golang-dev https://golang.org/cl/7413045
2013-02-19strings: faster Count, IndexDonovan Hide
Slightly better benchmarks for when string and separator are equivalent and also less branching in inner loops. benchmark old ns/op new ns/op delta BenchmarkGenericNoMatch 3430 3442 +0.35% BenchmarkGenericMatch1 23590 22855 -3.12% BenchmarkGenericMatch2 108031 105025 -2.78% BenchmarkSingleMaxSkipping 2969 2704 -8.93% BenchmarkSingleLongSuffixFail 2826 2572 -8.99% BenchmarkSingleMatch 205268 197832 -3.62% BenchmarkByteByteNoMatch 987 921 -6.69% BenchmarkByteByteMatch 2014 1749 -13.16% BenchmarkByteStringMatch 3083 3050 -1.07% BenchmarkHTMLEscapeNew 922 915 -0.76% BenchmarkHTMLEscapeOld 1654 1570 -5.08% BenchmarkByteByteReplaces 11897 11556 -2.87% BenchmarkByteByteMap 4485 4255 -5.13% BenchmarkIndexRune 174 121 -30.46% BenchmarkIndexRuneFastPath 41 41 -0.24% BenchmarkIndex 45 44 -0.22% BenchmarkMapNoChanges 433 431 -0.46% BenchmarkIndexHard1 4015336 3316490 -17.40% BenchmarkIndexHard2 3976254 3395627 -14.60% BenchmarkIndexHard3 3973158 3378329 -14.97% BenchmarkCountHard1 4403549 3448512 -21.69% BenchmarkCountHard2 4387437 3413059 -22.21% BenchmarkCountHard3 4403891 3382661 -23.19% BenchmarkIndexTorture 28354 25864 -8.78% BenchmarkCountTorture 29625 27463 -7.30% BenchmarkFields 38752040 39169840 +1.08% BenchmarkFieldsFunc 38797765 38888060 +0.23% benchmark old MB/s new MB/s speedup BenchmarkSingleMaxSkipping 3367.07 3697.62 1.10x BenchmarkSingleLongSuffixFail 354.51 389.47 1.10x BenchmarkSingleMatch 73.07 75.82 1.04x BenchmarkFields 27.06 26.77 0.99x BenchmarkFieldsFunc 27.03 26.96 1.00x R=dave, fullung, remyoudompheng, rsc CC=golang-dev https://golang.org/cl/7350045
2013-02-17strings: better mean complexity for Count and Index.Rémy Oudompheng
The O(n+m) complexity is obtained probabilistically by using Rabin-Karp algorithm, which provides the needed complexity unless exceptional collisions occur, without memory allocation. benchmark old ns/op new ns/op delta BenchmarkIndexHard1 6532331 4045886 -38.06% BenchmarkIndexHard2 8178173 4038975 -50.61% BenchmarkIndexHard3 6973687 4042591 -42.03% BenchmarkCountHard1 6270864 4071090 -35.08% BenchmarkCountHard2 7838039 4072853 -48.04% BenchmarkCountHard3 6697828 4071964 -39.20% BenchmarkIndexTorture 2730546 28934 -98.94% BenchmarkCountTorture 2729622 29064 -98.94% Fixes #4600. R=rsc, donovanhide, remyoudompheng CC=golang-dev https://golang.org/cl/7314095
2013-02-01bytes, strings: add TrimPrefix and TrimSuffixBrad Fitzpatrick
Everybody either gets confused and thinks this is TrimLeft/TrimRight or does this by hand which gets repetitive looking. R=rsc, kevlar CC=golang-dev https://golang.org/cl/7239044
2012-10-30gofmt: apply gofmt -w src miscRobert Griesemer
Remove trailing whitespace in comments. No other changes. R=r CC=golang-dev https://golang.org/cl/6815053
2012-09-18bytes, strings: add Fields benchmarksRuss Cox
The performance changes will be a few different CLs. Start with benchmarks as a baseline. R=golang-dev, r CC=golang-dev https://golang.org/cl/6537043
2011-12-20panics: use the new facilities of testing.B insteadRob Pike
Lots of panics go away. Also fix a name error in html/template. R=golang-dev, rsc CC=golang-dev https://golang.org/cl/5498045
2011-12-08update tree for new default type ruleRuss Cox
R=golang-dev, bradfitz CC=golang-dev https://golang.org/cl/5448091
2011-11-28strings: fix test outputChristopher Wedgwood
R=rsc, gri CC=golang-dev https://golang.org/cl/5445044
2011-11-23strings: Add ContainsAny and ContainsRune to correspond to IndexAny etc.Scott Lawrence
R=golang-dev, r CC=golang-dev https://golang.org/cl/5430046
2011-11-13various: avoid func compareRuss Cox
R=gri, r, bradfitz CC=golang-dev https://golang.org/cl/5371074
2011-11-08renaming_3: gofix -r go1pkgrename src/pkg/[m-z]*Rob Pike
R=rsc CC=golang-dev https://golang.org/cl/5345045
2011-11-01src/pkg/[n-z]*: gofix -r error -force=errorRuss Cox
R=golang-dev, bsiegert, iant CC=golang-dev https://golang.org/cl/5294074
2011-10-25bytes, strings: use runeRuss Cox
Various rune-based APIs change. R=golang-dev, r CC=golang-dev https://golang.org/cl/5306044
2011-09-26strings: add EqualFoldRuss Cox
Case-insensitive strcmp without using ToLower. (Using ToLower is not always correct, and it allocates.) R=golang-dev, r CC=golang-dev https://golang.org/cl/5143044
2011-07-14go/printer: changed max. number of newlines from 3 to 2Robert Griesemer
manual changes in src/pkg/go/printer, src/cmd/gofix/signal_test.go (cd src/cmd/gofix/testdata; gofmt -w *.in *.out) (cd src/pkg/go/printer; gotest -update) gofmt -w misc src runs all tests R=golang-dev, rsc CC=golang-dev https://golang.org/cl/4715041
2011-06-28strings.Split: make the default to split all.Rob Pike
Change the signature of Split to have no count, assuming a full split, and rename the existing Split with a count to SplitN. Do the same to package bytes. Add a gofix module. R=adg, dsymonds, alex.brainman, rsc CC=golang-dev https://golang.org/cl/4661051
2011-05-26strings: implement UnreadByte, UnreadRuneRobert Griesemer
Added corresponding tests. R=rsc CC=golang-dev https://golang.org/cl/4560045
2011-03-28strings: Map: avoid allocation when string is unchangedBrad Fitzpatrick
This speeds up strings.ToLower, etc. before/after: strings_test.BenchmarkMapNoChanges 1000000 1013 ns/op strings_test.BenchmarkMapNoChanges 5000000 442 ns/op R=r, rog, eh, rsc CC=golang-dev https://golang.org/cl/4306056
2011-03-25testing: shorten some tests.Rob Pike
These are the top runners. More to come. Also print two digits of timing info under -test.v. R=rsc CC=golang-dev https://golang.org/cl/4317044
2011-03-08strings: better benchmark names; add BenchmarkIndexBrad Fitzpatrick
R=dsymonds CC=golang-dev https://golang.org/cl/4264052
2011-03-08strings: add IndexRune tests, ASCII fast pathBrad Fitzpatrick
$ gotest -test.v -test.run=IndexRune -test.bench=.* === RUN strings_test.TestIndexRune --- PASS: strings_test.TestIndexRune (0.0 seconds) PASS strings_test.BenchmarkIndexRune 20000000 105 ns/op strings_test.BenchmarkIndexByte 50000000 48 ns/op R=rsc, dsymonds CC=golang-dev https://golang.org/cl/4267050
2010-11-12strings: add LastIndexAnyBenny Siegert
The need for a LastIndexAny function has come up in the discussion for https://golang.org/cl/3008041/. This function is implemented analogously to lastIndexFunc, using functions from the utf8 package. R=r, rsc, PeterGo CC=golang-dev https://golang.org/cl/3057041
2010-11-01strings: ContainsBrad Fitzpatrick
Tiny helper to avoid strings.Index(s, sub) != -1 R=rsc, r2, r CC=golang-dev https://golang.org/cl/2265044
2010-10-22gofmt -s -w src miscRobert Griesemer
R=r, rsc CC=golang-dev https://golang.org/cl/2662041
2010-09-21strings: fix minor bug in LastIndexFuncRoger Peppe
R=r, rsc CC=golang-dev https://golang.org/cl/2250042
2010-08-03strings: fix Split("", "", -1)Scott Lawrence
Fixes #980. Made it return an empty array, rather than crash. Added relevant test cases to strings. R=golang-dev, r CC=golang-dev https://golang.org/cl/1914041
2010-07-23bytes: port IndexFunc and LastIndexFunc from strings packageFazlul Shahriar
This CL basically applies the same changes as http://code.google.com/p/go/source/detail?r=5e0a29014e8e but for bytes package. R=r, rog CC=golang-dev https://golang.org/cl/1670052
2010-07-20strings: add TitleRob Pike
strings.ToTitle converts all characters to title case, which for consistency with the other To* functions it should continue to do. This CL adds string.Title, which does a proper title-casing of the string. A similar function for package bytes will follow once this is settled. Fixes #933. R=rsc CC=golang-dev https://golang.org/cl/1869042
2010-07-01strings and bytes.Split: make count of 0 mean 0, not infinite.Rob Pike
Use a count of -1 for infinity. Ditto for Replace. R=rsc CC=golang-dev https://golang.org/cl/1704044
2010-06-30bytes, strings: add ReplaceRuss Cox
This is the Replace I suggested in the review of CL 1114041. It's true that we already have regexp.MustCompile(regexp.QuoteMeta(old)).ReplaceAll(s, new) but because this Replace is doing a simpler job it is simpler to call and inherently more efficient. I will add the bytes implementation and tests to the CL after the strings one has been reviewed. R=r, cw CC=golang-dev https://golang.org/cl/1731048
2010-06-14Add IndexFunc and LastIndexFunc.Roger Peppe
Change TrimRight and TrimLeft to use these functions. Incidentally fix minor bug in TrimRight. Add some test cases for this. YMMV whether it's worth saving the closure allocation. R=r, r2 CC=golang-dev, hoisie, rsc https://golang.org/cl/1198044
2010-04-20strings: add ReadRune to ReaderKyle Consalus
R=rsc CC=golang-dev https://golang.org/cl/940041
2010-04-19Added strings.FieldsFunc, a generalization of strings.Fields in style of the ↵Kyle Consalus
strings.Trim*Func functions. R=golang-dev, r CC=golang-dev https://golang.org/cl/824051
2010-04-09strings: add IndexRune, Trim, TrimLeft, TrimRight, and the generic ↵Michael Hoisie
equivalents TrimFunc, TrimLeftFunc, TrimRightFunc R=rsc, r CC=golang-dev https://golang.org/cl/799048
2010-03-30Unicode: provide an ability to supplement the case-mapping tablesRob Pike
in character and string case mapping routines. Add a custom mapper for Turkish and Azeri. A more general solution for deriving the case information from Unicode's SpecialCasing.txt will require more work. Fixes #703. R=rsc, rsc1 CC=golang-dev, mdakin https://golang.org/cl/824043
2010-03-26bytes, strings: IndexOfAnyRobert Griesemer
+ first use in go/doc R=r CC=golang-dev https://golang.org/cl/781041
2010-02-25strings: delete Runes, BytesRuss Cox
gofmt -w -r 'strings.Bytes(a) -> []byte(a)' src/cmd src/pkg test/bench gofmt -w -r 'strings.Runes(a) -> []int(a)' src/cmd src/pkg test/bench delete unused imports R=r CC=golang-dev https://golang.org/cl/224062
2009-12-15bytes, strings: add new function FieldsAndrey Mirtchovski
R=rsc, r, phf CC=golang-dev https://golang.org/cl/170046
2009-12-151) Change default gofmt default settings forRobert Griesemer
parsing and printing to new syntax. Use -oldparser to parse the old syntax, use -oldprinter to print the old syntax. 2) Change default gofmt formatting settings to use tabs for indentation only and to use spaces for alignment. This will make the code alignment insensitive to an editor's tabwidth. Use -spaces=false to use tabs for alignment. 3) Manually changed src/exp/parser/parser_test.go so that it doesn't try to parse the parser's source files using the old syntax (they have new syntax now). 4) gofmt -w src misc test/bench 4th set of files. R=rsc CC=golang-dev https://golang.org/cl/180049
2009-12-11bytes, strings: allow -1 in Map to mean "drop this character".Kei Son
xml: drop invalid characters in attribute names when constructing struct field names. R=rsc CC=r https://golang.org/cl/157104
2009-12-02Runes: turn string into []intPeter Froehlich
Split: fixed typo in documentation R=rsc, r, r1 https://golang.org/cl/157170
2009-11-18add bytes.IndexByte; common case we can make fast later.Rob Pike
also pick off the special case in strings.Index. don't want strings.IndexByte because the call site will very rarely need to allocate and we can handle the test in the code itself. bytes.IndexByte can avoid a common allocation. R=rsc CC=golang-dev https://golang.org/cl/156091