summaryrefslogtreecommitdiff
path: root/fpdf_test.go
diff options
context:
space:
mode:
authorAloidev <aloiweb@gmail.com>2017-07-19 11:00:59 +0700
committerAloidev <aloiweb@gmail.com>2017-07-19 11:00:59 +0700
commitfdeef9c676bdb5f738d02c770b6312c0e2e12775 (patch)
tree7ed0d42f18b2049813697938d1bad29cf8f06312 /fpdf_test.go
parent1ea782459766b89293454ef7824f1bb5b071c4a1 (diff)
Issue #121 Add Last Page information FooterFnc
Diffstat (limited to 'fpdf_test.go')
-rw-r--r--fpdf_test.go63
1 files changed, 63 insertions, 0 deletions
diff --git a/fpdf_test.go b/fpdf_test.go
index 7da45aa..f25866e 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("got err:%v want nil")
+ }
+ 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 %s : %d should less than indec of %s : %d", f, l)
+ }
}
type fontResourceType struct {