|
7 | 7 | "log"
|
8 | 8 | "os"
|
9 | 9 | "os/exec"
|
| 10 | + "path" |
10 | 11 | "path/filepath"
|
11 | 12 | "reflect"
|
12 | 13 | "runtime"
|
@@ -125,6 +126,7 @@ func TestAPI(t *testing.T) {
|
125 | 126 | t.Run("Options", testOptions(v))
|
126 | 127 | t.Run("AllOptionsInfo", testAllOptionsInfo(v))
|
127 | 128 | t.Run("OptionsInfo", testOptionsInfo(v))
|
| 129 | + t.Run("OptionsValue", testOptionsValue(v)) |
128 | 130 | t.Run("OpenTerm", testTerm(v))
|
129 | 131 | t.Run("ChannelClientInfo", testChannelClientInfo(v))
|
130 | 132 | t.Run("UI", testUI(v))
|
@@ -4574,6 +4576,99 @@ func testOptionsInfo(v *Nvim) func(*testing.T) {
|
4574 | 4576 | }
|
4575 | 4577 | }
|
4576 | 4578 |
|
| 4579 | +func testOptionsValue(v *Nvim) func(*testing.T) { |
| 4580 | + return func(t *testing.T) { |
| 4581 | + tests := map[string]struct { |
| 4582 | + name string |
| 4583 | + opts map[string]OptionValueScope |
| 4584 | + want interface{} |
| 4585 | + value interface{} |
| 4586 | + }{ |
| 4587 | + "equalalways": { |
| 4588 | + name: "equalalways", |
| 4589 | + opts: map[string]OptionValueScope{ |
| 4590 | + "scope": GlobalScope, |
| 4591 | + }, |
| 4592 | + want: true, |
| 4593 | + value: false, |
| 4594 | + }, |
| 4595 | + "lazyredraw": { |
| 4596 | + name: "lazyredraw", |
| 4597 | + opts: map[string]OptionValueScope{ |
| 4598 | + "scope": LocalScope, |
| 4599 | + }, |
| 4600 | + want: false, |
| 4601 | + value: true, |
| 4602 | + }, |
| 4603 | + } |
| 4604 | + for name, tt := range tests { |
| 4605 | + t.Run(path.Join(name, "Nvim"), func(t *testing.T) { |
| 4606 | + skipVersion(t, "v0.7.0") |
| 4607 | + |
| 4608 | + var result interface{} |
| 4609 | + if err := v.OptionValue(tt.name, tt.opts, &result); err != nil { |
| 4610 | + t.Fatal(err) |
| 4611 | + } |
| 4612 | + if !reflect.DeepEqual(result, tt.want) { |
| 4613 | + t.Fatalf("got %#v but want %#v", result, tt.want) |
| 4614 | + } |
| 4615 | + |
| 4616 | + if err := v.SetOptionValue(tt.name, tt.value, tt.opts); err != nil { |
| 4617 | + t.Fatal(err) |
| 4618 | + } |
| 4619 | + |
| 4620 | + var result2 interface{} |
| 4621 | + if err := v.OptionValue(tt.name, tt.opts, &result2); err != nil { |
| 4622 | + t.Fatal(err) |
| 4623 | + } |
| 4624 | + if reflect.DeepEqual(result, result2) { |
| 4625 | + t.Fatalf("got %#v but want %#v", result, result2) |
| 4626 | + } |
| 4627 | + |
| 4628 | + if err := v.SetOptionValue(tt.name, result, tt.opts); err != nil { |
| 4629 | + t.Fatal(err) |
| 4630 | + } |
| 4631 | + }) |
| 4632 | + } |
| 4633 | + |
| 4634 | + for name, tt := range tests { |
| 4635 | + t.Run(path.Join(name, "Batch"), func(t *testing.T) { |
| 4636 | + skipVersion(t, "v0.7.0") |
| 4637 | + |
| 4638 | + b := v.NewBatch() |
| 4639 | + |
| 4640 | + var result interface{} |
| 4641 | + b.OptionValue(tt.name, tt.opts, &result) |
| 4642 | + if err := b.Execute(); err != nil { |
| 4643 | + t.Fatal(err) |
| 4644 | + } |
| 4645 | + if !reflect.DeepEqual(result, tt.want) { |
| 4646 | + t.Fatalf("got %#v but want %#v", result, tt.want) |
| 4647 | + } |
| 4648 | + |
| 4649 | + b.SetOptionValue(tt.name, tt.value, tt.opts) |
| 4650 | + if err := b.Execute(); err != nil { |
| 4651 | + t.Fatal(err) |
| 4652 | + } |
| 4653 | + |
| 4654 | + var result2 interface{} |
| 4655 | + b.OptionValue(tt.name, tt.opts, &result2) |
| 4656 | + if err := b.Execute(); err != nil { |
| 4657 | + t.Fatal(err) |
| 4658 | + } |
| 4659 | + if reflect.DeepEqual(result, result2) { |
| 4660 | + t.Fatalf("got %#v but want %#v", result, result2) |
| 4661 | + } |
| 4662 | + |
| 4663 | + b.SetOptionValue(tt.name, result, tt.opts) |
| 4664 | + if err := b.Execute(); err != nil { |
| 4665 | + t.Fatal(err) |
| 4666 | + } |
| 4667 | + }) |
| 4668 | + } |
| 4669 | + } |
| 4670 | +} |
| 4671 | + |
4577 | 4672 | // TODO(zchee): correct testcase
|
4578 | 4673 | func testTerm(v *Nvim) func(*testing.T) {
|
4579 | 4674 | return func(t *testing.T) {
|
|
0 commit comments