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  }