diff options
author | Kurt <kurt.w.jung@gmail.com> | 2017-07-19 08:58:23 -0400 |
---|---|---|
committer | Kurt <kurt.w.jung@gmail.com> | 2017-07-19 08:58:23 -0400 |
commit | 89020dfd155e80592495a7bbc37f6e5e713c0389 (patch) | |
tree | 0c5bb80595a5fd7936eddb6af939c7f3834ff279 /fpdf_test.go | |
parent | 1ea782459766b89293454ef7824f1bb5b071c4a1 (diff) | |
parent | 784ad190acab08c54aa4847f15207d5fa9c25ef0 (diff) |
Merge branch 'aloidev-LastPageIndicator'
Diffstat (limited to 'fpdf_test.go')
-rw-r--r-- | fpdf_test.go | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/fpdf_test.go b/fpdf_test.go index 7da45aa..9b45486 100644 --- a/fpdf_test.go +++ b/fpdf_test.go @@ -75,7 +75,70 @@ func TestIssue0116(t *testing.T) { if pdf.Error() == nil { t.Fatalf("expecting error when rendering text without having set font") } +} + +// Test to make sure the footer is not call twice and SetFooterFuncLpi can work +// without SetFooterFunc. +func TestFooterFuncLpi(t *testing.T) { + pdf := gofpdf.New("P", "mm", "A4", "") + var ( + oldFooterFnc = "oldFooterFnc" + bothPages = "bothPages" + firstPageOnly = "firstPageOnly" + lastPageOnly = "lastPageOnly" + ) + // This set just for testing, only set SetFooterFuncLpi. + pdf.SetFooterFunc(func() { + pdf.SetY(-15) + pdf.SetFont("Arial", "I", 8) + pdf.CellFormat(0, 10, oldFooterFnc, + "", 0, "C", false, 0, "") + }) + pdf.SetFooterFuncLpi(func(lastPage bool) { + pdf.SetY(-15) + pdf.SetFont("Arial", "I", 8) + pdf.CellFormat(0, 10, bothPages, "", 0, "L", false, 0, "") + if !lastPage { + pdf.CellFormat(0, 10, firstPageOnly, "", 0, "C", false, 0, "") + } else { + pdf.CellFormat(0, 10, lastPageOnly, "", 0, "C", false, 0, "") + } + }) + pdf.AddPage() + pdf.SetFont("Arial", "B", 16) + for j := 1; j <= 40; j++ { + pdf.CellFormat(0, 10, fmt.Sprintf("Printing line number %d", j), + "", 1, "", false, 0, "") + } + if pdf.Error() != nil { + t.Fatalf("not expecting error when rendering text") + } + w := &bytes.Buffer{} + if err := pdf.Output(w); err != nil { + t.Errorf("unexpected err: %s", err) + } + b := w.Bytes() + if bytes.Contains(b, []byte(oldFooterFnc)) { + t.Errorf("not expecting %s render on pdf when FooterFncLpi is set", oldFooterFnc) + } + got := bytes.Count(b, []byte("bothPages")) + if got != 2 { + t.Errorf("footer %s should render on two page got:%d", bothPages, got) + } + got = bytes.Count(b, []byte(firstPageOnly)) + if got != 1 { + t.Errorf("footer %s should render only on first page got: %d", firstPageOnly, got) + } + got = bytes.Count(b, []byte(lastPageOnly)) + if got != 1 { + t.Errorf("footer %s should render only on first page got: %d", lastPageOnly, got) + } + f := bytes.Index(b, []byte(firstPageOnly)) + l := bytes.Index(b, []byte(lastPageOnly)) + if f > l { + t.Errorf("index %d (%s) should less than index %d (%s)", f, firstPageOnly, l, lastPageOnly) + } } type fontResourceType struct { |