github.com/neugram/ng@v0.0.0-20180309130942-d472ff93d872/frame/memframe/memframe_test.go (about)

     1  // Copyright 2015 The Neugram Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package memframe_test
     6  
     7  import (
     8  	"testing"
     9  
    10  	"neugram.io/ng/frame"
    11  	"neugram.io/ng/frame/internal/frametest"
    12  	"neugram.io/ng/frame/memframe"
    13  )
    14  
    15  func TestLoadPresidents(t *testing.T) {
    16  	f := memframe.NewLiteral([]string{"ID", "Name", "Term1", "Term2"}, nil)
    17  	frametest.LoadPresidents(t, f)
    18  }
    19  
    20  func TestMemory(t *testing.T) {
    21  	fm := memframe.New(6, 4)
    22  	var f frame.Frame = fm
    23  	h, err := fm.Len()
    24  	if err != nil {
    25  		t.Fatal(err)
    26  	}
    27  	if h != 4 {
    28  		t.Fatalf("Len(): %d, want %d", h, 4)
    29  	}
    30  	if w := len(f.Cols()); w != 6 {
    31  		t.Fatalf("len(f.Cols())=%d, want %d", w, 6)
    32  	}
    33  	if err := fm.Set(2, 1, 2.1); err != nil {
    34  		t.Errorf("Set error: %v", err)
    35  	}
    36  	var v interface{}
    37  	if err := fm.Get(2, 1, &v); err != nil {
    38  		t.Fatal(err)
    39  	}
    40  	if v != 2.1 {
    41  		t.Errorf("Get(2, 1) = %v, want %v", v, 2.1)
    42  	}
    43  
    44  	f = frame.Slice(f, 2, 3, 1, 1)
    45  	fm, ok := f.(*memframe.Memory)
    46  	if !ok {
    47  		t.Fatalf("slice produced wrong type: %T", f)
    48  	}
    49  	h, err = fm.Len()
    50  	if err != nil {
    51  		t.Fatal(err)
    52  	}
    53  	if h != 1 {
    54  		t.Fatalf("slice Len(): %d, want %d", h, 1)
    55  	}
    56  	if w := len(f.Cols()); w != 3 {
    57  		t.Fatalf("slice width: %d, want %d", w, 3)
    58  	}
    59  	v = 0
    60  	if err := f.Get(0, 0, &v); err != nil {
    61  		t.Fatal(err)
    62  	}
    63  	if v != 2.1 {
    64  		t.Errorf("slice Get(0, 0) = %v, want %v", v, 2.1)
    65  	}
    66  }