// Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package strconv_test import ( . "strconv" "testing" ) func TestFormatComplex(t *testing.T) { tests := []struct { c complex128 fmt byte prec int bitSize int out string }{ // a variety of signs {1 + 2i, 'g', -1, 128, "(1+2i)"}, {3 - 4i, 'g', -1, 128, "(3-4i)"}, {-5 + 6i, 'g', -1, 128, "(-5+6i)"}, {-7 - 8i, 'g', -1, 128, "(-7-8i)"}, // test that fmt and prec are working {3.14159 + 0.00123i, 'e', 3, 128, "(3.142e+00+1.230e-03i)"}, {3.14159 + 0.00123i, 'f', 3, 128, "(3.142+0.001i)"}, {3.14159 + 0.00123i, 'g', 3, 128, "(3.14+0.00123i)"}, // ensure bitSize rounding is working {1.2345678901234567 + 9.876543210987654i, 'f', -1, 128, "(1.2345678901234567+9.876543210987654i)"}, {1.2345678901234567 + 9.876543210987654i, 'f', -1, 64, "(1.2345679+9.876543i)"}, // other cases are handled by FormatFloat tests } for _, test := range tests { out := FormatComplex(test.c, test.fmt, test.prec, test.bitSize) if out != test.out { t.Fatalf("FormatComplex(%v, %q, %d, %d) = %q; want %q", test.c, test.fmt, test.prec, test.bitSize, out, test.out) } } } func TestFormatComplexInvalidBitSize(t *testing.T) { defer func() { if r := recover(); r == nil { t.Fatalf("expected panic due to invalid bitSize") } }() _ = FormatComplex(1+2i, 'g', -1, 100) }