lab.nexedi.com/kirr/go123@v0.0.0-20240207185015-8299741fa871/mem/mem_test.go (about) 1 // Copyright (C) 2015-2017 Nexedi SA and Contributors. 2 // Kirill Smelkov <kirr@nexedi.com> 3 // 4 // This program is free software: you can Use, Study, Modify and Redistribute 5 // it under the terms of the GNU General Public License version 3, or (at your 6 // option) any later version, as published by the Free Software Foundation. 7 // 8 // You can also Link and Combine this program with other software covered by 9 // the terms of any of the Free Software licenses or any of the Open Source 10 // Initiative approved licenses and Convey the resulting work. Corresponding 11 // source of such a combination shall include the source code for all other 12 // software used. 13 // 14 // This program is distributed WITHOUT ANY WARRANTY; without even the implied 15 // warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 // 17 // See COPYING file for full licensing terms. 18 // See https://www.nexedi.com/licensing for rationale and options. 19 20 package mem 21 22 import ( 23 "reflect" 24 "testing" 25 ) 26 27 // check that String() and Bytes() create correct objects which alias original object memory 28 func TestStringBytes(t *testing.T) { 29 s := "Hello" 30 b := []byte(s) 31 32 s1 := String(b) 33 b1 := Bytes(s1) 34 if s1 != s { t.Error("string -> []byte -> String != Identity") } 35 if !reflect.DeepEqual(b1, b) { t.Error("[]byte -> String -> Bytes != Identity") } 36 b[0] = 'I' 37 if s != "Hello" { t.Error("string -> []byte not copied") } 38 if s1 != "Iello" { t.Error("[]byte -> String not aliased") } 39 if !reflect.DeepEqual(b1, b) { t.Error("string -> Bytes not aliased") } 40 }