Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(382)

Side by Side Diff: src/text/template/exec_test.go

Issue 149780043: code review 149780043: text/template: allow comparison functions to work betwe... (Closed)
Patch Set: diff -r 50ce4ec65c4acfa2ca72e62ea283e1d730f2d6f3 https://code.google.com/p/go/ Created 9 years, 6 months ago
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/text/template/doc.go ('k') | src/text/template/funcs.go » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Go Authors. All rights reserved. 1 // Copyright 2011 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style 2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file. 3 // license that can be found in the LICENSE file.
4 4
5 package template 5 package template
6 6
7 import ( 7 import (
8 "bytes" 8 "bytes"
9 "errors" 9 "errors"
10 "flag" 10 "flag"
(...skipping 884 matching lines...) Expand 10 before | Expand all | Expand 10 after
895 {"eq true true", "true", true}, 895 {"eq true true", "true", true},
896 {"eq true false", "false", true}, 896 {"eq true false", "false", true},
897 {"eq 1+2i 1+2i", "true", true}, 897 {"eq 1+2i 1+2i", "true", true},
898 {"eq 1+2i 1+3i", "false", true}, 898 {"eq 1+2i 1+3i", "false", true},
899 {"eq 1.5 1.5", "true", true}, 899 {"eq 1.5 1.5", "true", true},
900 {"eq 1.5 2.5", "false", true}, 900 {"eq 1.5 2.5", "false", true},
901 {"eq 1 1", "true", true}, 901 {"eq 1 1", "true", true},
902 {"eq 1 2", "false", true}, 902 {"eq 1 2", "false", true},
903 {"eq `xy` `xy`", "true", true}, 903 {"eq `xy` `xy`", "true", true},
904 {"eq `xy` `xyz`", "false", true}, 904 {"eq `xy` `xyz`", "false", true},
905 » {"eq .Xuint .Xuint", "true", true}, 905 » {"eq .Uthree .Uthree", "true", true},
906 » {"eq .Xuint .Yuint", "false", true}, 906 » {"eq .Uthree .Ufour", "false", true},
907 {"eq 3 4 5 6 3", "true", true}, 907 {"eq 3 4 5 6 3", "true", true},
908 {"eq 3 4 5 6 7", "false", true}, 908 {"eq 3 4 5 6 7", "false", true},
909 {"ne true true", "false", true}, 909 {"ne true true", "false", true},
910 {"ne true false", "true", true}, 910 {"ne true false", "true", true},
911 {"ne 1+2i 1+2i", "false", true}, 911 {"ne 1+2i 1+2i", "false", true},
912 {"ne 1+2i 1+3i", "true", true}, 912 {"ne 1+2i 1+3i", "true", true},
913 {"ne 1.5 1.5", "false", true}, 913 {"ne 1.5 1.5", "false", true},
914 {"ne 1.5 2.5", "true", true}, 914 {"ne 1.5 2.5", "true", true},
915 {"ne 1 1", "false", true}, 915 {"ne 1 1", "false", true},
916 {"ne 1 2", "true", true}, 916 {"ne 1 2", "true", true},
917 {"ne `xy` `xy`", "false", true}, 917 {"ne `xy` `xy`", "false", true},
918 {"ne `xy` `xyz`", "true", true}, 918 {"ne `xy` `xyz`", "true", true},
919 » {"ne .Xuint .Xuint", "false", true}, 919 » {"ne .Uthree .Uthree", "false", true},
920 » {"ne .Xuint .Yuint", "true", true}, 920 » {"ne .Uthree .Ufour", "true", true},
921 {"lt 1.5 1.5", "false", true}, 921 {"lt 1.5 1.5", "false", true},
922 {"lt 1.5 2.5", "true", true}, 922 {"lt 1.5 2.5", "true", true},
923 {"lt 1 1", "false", true}, 923 {"lt 1 1", "false", true},
924 {"lt 1 2", "true", true}, 924 {"lt 1 2", "true", true},
925 {"lt `xy` `xy`", "false", true}, 925 {"lt `xy` `xy`", "false", true},
926 {"lt `xy` `xyz`", "true", true}, 926 {"lt `xy` `xyz`", "true", true},
927 » {"lt .Xuint .Xuint", "false", true}, 927 » {"lt .Uthree .Uthree", "false", true},
928 » {"lt .Xuint .Yuint", "true", true}, 928 » {"lt .Uthree .Ufour", "true", true},
929 {"le 1.5 1.5", "true", true}, 929 {"le 1.5 1.5", "true", true},
930 {"le 1.5 2.5", "true", true}, 930 {"le 1.5 2.5", "true", true},
931 {"le 2.5 1.5", "false", true}, 931 {"le 2.5 1.5", "false", true},
932 {"le 1 1", "true", true}, 932 {"le 1 1", "true", true},
933 {"le 1 2", "true", true}, 933 {"le 1 2", "true", true},
934 {"le 2 1", "false", true}, 934 {"le 2 1", "false", true},
935 {"le `xy` `xy`", "true", true}, 935 {"le `xy` `xy`", "true", true},
936 {"le `xy` `xyz`", "true", true}, 936 {"le `xy` `xyz`", "true", true},
937 {"le `xyz` `xy`", "false", true}, 937 {"le `xyz` `xy`", "false", true},
938 » {"le .Xuint .Xuint", "true", true}, 938 » {"le .Uthree .Uthree", "true", true},
939 » {"le .Xuint .Yuint", "true", true}, 939 » {"le .Uthree .Ufour", "true", true},
940 » {"le .Yuint .Xuint", "false", true}, 940 » {"le .Ufour .Uthree", "false", true},
941 {"gt 1.5 1.5", "false", true}, 941 {"gt 1.5 1.5", "false", true},
942 {"gt 1.5 2.5", "false", true}, 942 {"gt 1.5 2.5", "false", true},
943 {"gt 1 1", "false", true}, 943 {"gt 1 1", "false", true},
944 {"gt 2 1", "true", true}, 944 {"gt 2 1", "true", true},
945 {"gt 1 2", "false", true}, 945 {"gt 1 2", "false", true},
946 {"gt `xy` `xy`", "false", true}, 946 {"gt `xy` `xy`", "false", true},
947 {"gt `xy` `xyz`", "false", true}, 947 {"gt `xy` `xyz`", "false", true},
948 » {"gt .Xuint .Xuint", "false", true}, 948 » {"gt .Uthree .Uthree", "false", true},
949 » {"gt .Xuint .Yuint", "false", true}, 949 » {"gt .Uthree .Ufour", "false", true},
950 » {"gt .Yuint .Xuint", "true", true}, 950 » {"gt .Ufour .Uthree", "true", true},
951 {"ge 1.5 1.5", "true", true}, 951 {"ge 1.5 1.5", "true", true},
952 {"ge 1.5 2.5", "false", true}, 952 {"ge 1.5 2.5", "false", true},
953 {"ge 2.5 1.5", "true", true}, 953 {"ge 2.5 1.5", "true", true},
954 {"ge 1 1", "true", true}, 954 {"ge 1 1", "true", true},
955 {"ge 1 2", "false", true}, 955 {"ge 1 2", "false", true},
956 {"ge 2 1", "true", true}, 956 {"ge 2 1", "true", true},
957 {"ge `xy` `xy`", "true", true}, 957 {"ge `xy` `xy`", "true", true},
958 {"ge `xy` `xyz`", "false", true}, 958 {"ge `xy` `xyz`", "false", true},
959 {"ge `xyz` `xy`", "true", true}, 959 {"ge `xyz` `xy`", "true", true},
960 » {"ge .Xuint .Xuint", "true", true}, 960 » {"ge .Uthree .Uthree", "true", true},
961 » {"ge .Xuint .Yuint", "false", true}, 961 » {"ge .Uthree .Ufour", "false", true},
962 » {"ge .Yuint .Xuint", "true", true}, 962 » {"ge .Ufour .Uthree", "true", true},
963 » // Mixing signed and unsigned integers.
964 » {"eq .Uthree .Three", "true", true},
965 » {"eq .Three .Uthree", "true", true},
966 » {"le .Uthree .Three", "true", true},
967 » {"le .Three .Uthree", "true", true},
968 » {"ge .Uthree .Three", "true", true},
969 » {"ge .Three .Uthree", "true", true},
970 » {"lt .Uthree .Three", "false", true},
971 » {"lt .Three .Uthree", "false", true},
972 » {"gt .Uthree .Three", "false", true},
973 » {"gt .Three .Uthree", "false", true},
974 » {"eq .Ufour .Three", "false", true},
975 » {"lt .Ufour .Three", "false", true},
976 » {"gt .Ufour .Three", "true", true},
977 » {"eq .NegOne .Uthree", "false", true},
978 » {"eq .Uthree .NegOne", "false", true},
979 » {"ne .NegOne .Uthree", "true", true},
980 » {"ne .Uthree .NegOne", "true", true},
981 » {"lt .NegOne .Uthree", "true", true},
982 » {"lt .Uthree .NegOne", "false", true},
983 » {"le .NegOne .Uthree", "true", true},
984 » {"le .Uthree .NegOne", "false", true},
985 » {"gt .NegOne .Uthree", "false", true},
986 » {"gt .Uthree .NegOne", "true", true},
987 » {"ge .NegOne .Uthree", "false", true},
988 » {"ge .Uthree .NegOne", "true", true},
989 » {"eq (index `x` 0) 'x'", "true", true}, // The example that triggered th is rule.
990 » {"eq (index `x` 0) 'y'", "false", true},
963 // Errors 991 // Errors
964 {"eq `xy` 1", "", false}, // Different types. 992 {"eq `xy` 1", "", false}, // Different types.
993 {"eq 2 2.0", "", false}, // Different types.
965 {"lt true true", "", false}, // Unordered types. 994 {"lt true true", "", false}, // Unordered types.
966 {"lt 1+0i 1+0i", "", false}, // Unordered types. 995 {"lt 1+0i 1+0i", "", false}, // Unordered types.
967 } 996 }
968 997
969 func TestComparison(t *testing.T) { 998 func TestComparison(t *testing.T) {
970 b := new(bytes.Buffer) 999 b := new(bytes.Buffer)
971 var cmpStruct = struct { 1000 var cmpStruct = struct {
972 » » Xuint, Yuint uint 1001 » » Uthree, Ufour uint
973 » }{3, 4} 1002 » » NegOne, Three int
1003 » }{3, 4, -1, 3}
974 for _, test := range cmpTests { 1004 for _, test := range cmpTests {
975 text := fmt.Sprintf("{{if %s}}true{{else}}false{{end}}", test.ex pr) 1005 text := fmt.Sprintf("{{if %s}}true{{else}}false{{end}}", test.ex pr)
976 tmpl, err := New("empty").Parse(text) 1006 tmpl, err := New("empty").Parse(text)
977 if err != nil { 1007 if err != nil {
978 » » » t.Fatal(err) 1008 » » » t.Fatalf("%q: %s", test.expr, err)
979 } 1009 }
980 b.Reset() 1010 b.Reset()
981 err = tmpl.Execute(b, &cmpStruct) 1011 err = tmpl.Execute(b, &cmpStruct)
982 if test.ok && err != nil { 1012 if test.ok && err != nil {
983 t.Errorf("%s errored incorrectly: %s", test.expr, err) 1013 t.Errorf("%s errored incorrectly: %s", test.expr, err)
984 continue 1014 continue
985 } 1015 }
986 if !test.ok && err == nil { 1016 if !test.ok && err == nil {
987 t.Errorf("%s did not error", test.expr) 1017 t.Errorf("%s did not error", test.expr)
988 continue 1018 continue
989 } 1019 }
990 if b.String() != test.truth { 1020 if b.String() != test.truth {
991 t.Errorf("%s: want %s; got %s", test.expr, test.truth, b .String()) 1021 t.Errorf("%s: want %s; got %s", test.expr, test.truth, b .String())
992 } 1022 }
993 } 1023 }
994 } 1024 }
OLDNEW
« no previous file with comments | « src/text/template/doc.go ('k') | src/text/template/funcs.go » ('j') | no next file with comments »

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b