github.com/ladydascalie/elvish@v0.0.0-20170703214355-2964dd3ece7f/util/wcwidth_test.go (about)

     1  package util
     2  
     3  import (
     4  	"testing"
     5  )
     6  
     7  var wcwidthTests = []struct {
     8  	in     rune
     9  	wanted int
    10  }{
    11  	{'\u0301', 0}, // Combining acute accent
    12  	{'a', 1},
    13  	{'Ω', 1},
    14  	{'好', 2},
    15  	{'か', 2},
    16  }
    17  
    18  func TestWcwidth(t *testing.T) {
    19  	for _, tt := range wcwidthTests {
    20  		out := Wcwidth(tt.in)
    21  		if out != tt.wanted {
    22  			t.Errorf("wcwidth(%q) => %v, want %v", tt.in, out, tt.wanted)
    23  		}
    24  	}
    25  }
    26  
    27  func TestOverrideWcwidth(t *testing.T) {
    28  	r := '❱'
    29  	oldw := Wcwidth(r)
    30  	w := oldw + 1
    31  
    32  	OverrideWcwidth(r, w)
    33  	if Wcwidth(r) != w {
    34  		t.Errorf("Wcwidth(%q) != %d after OverrideWcwidth", r, w)
    35  	}
    36  	UnoverrideWcwidth(r)
    37  	if Wcwidth(r) != oldw {
    38  		t.Errorf("Wcwidth(%q) != %d after UnoverrideWcwidth", r, oldw)
    39  	}
    40  }