odf_test.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. package odf
  2. import (
  3. "odf/generators"
  4. "odf/mappers"
  5. "odf/mappers/attr"
  6. "odf/model"
  7. _ "odf/model/stub"
  8. "odf/xmlns"
  9. "os"
  10. "testing"
  11. "ypk/assert"
  12. )
  13. func TestModel(t *testing.T) {
  14. m := model.ModelFactory()
  15. if m == nil {
  16. t.Error("model is nil")
  17. }
  18. w := m.NewWriter()
  19. if w == nil {
  20. t.Error("writer is nil")
  21. }
  22. }
  23. func TestMappers(t *testing.T) {
  24. m := model.ModelFactory()
  25. fm := &mappers.Formatter{}
  26. fm.ConnectTo(m)
  27. fm.MimeType = xmlns.MimeText
  28. fm.Init()
  29. }
  30. func TestGenerators(t *testing.T) {
  31. output, _ := os.OpenFile("test0.odf", os.O_CREATE|os.O_WRONLY, 0666)
  32. m := model.ModelFactory()
  33. fm := &mappers.Formatter{}
  34. fm.ConnectTo(m)
  35. fm.MimeType = xmlns.MimeText
  36. fm.Init()
  37. generators.Generate(m, output, fm.MimeType)
  38. assert.For(output.Close() == nil, 20)
  39. }
  40. func TestStructure(t *testing.T) {
  41. output, _ := os.OpenFile("test1.odf", os.O_CREATE|os.O_WRONLY, 0666)
  42. m := model.ModelFactory()
  43. fm := &mappers.Formatter{}
  44. fm.ConnectTo(m)
  45. fm.MimeType = xmlns.MimeText
  46. fm.Init()
  47. fm.WriteString("Hello, World! \t \n \r фыва фыва \n фыва")
  48. generators.Generate(m, output, fm.MimeType)
  49. assert.For(output.Close() == nil, 20)
  50. }
  51. func TestStylesMechanism(t *testing.T) {
  52. output, _ := os.OpenFile("test2.odf", os.O_CREATE|os.O_WRONLY, 0666)
  53. m := model.ModelFactory()
  54. fm := &mappers.Formatter{}
  55. fm.ConnectTo(m)
  56. fm.MimeType = xmlns.MimeText
  57. fm.Init()
  58. fm.RegisterFont("Arial", "Arial")
  59. fm.RegisterFont("Courier New", "Courier New")
  60. fm.SetDefaults(new(attr.TextAttributes).Size(18).FontFace("Courier New"))
  61. fm.SetDefaults(new(attr.TextAttributes).Size(16).FontFace("Courier New"))
  62. fm.WriteString(`Hello, World!`)
  63. fm.SetAttr(new(attr.TextAttributes).Size(32).FontFace("Arial"))
  64. fm.WriteString(`Hello, World!`)
  65. fm.SetAttr(new(attr.TextAttributes).Size(36).FontFace("Courier New"))
  66. fm.WriteString(`Hello, World!`)
  67. fm.SetAttr(new(attr.TextAttributes).Size(32).FontFace("Arial")) //test attribute cache
  68. fm.WriteString(`Hello, World!`)
  69. fm.SetAttr(new(attr.ParagraphAttributes).AlignRight().PageBreak())
  70. fm.WritePara(`Page break!`)
  71. fm.SetAttr(nil)
  72. fm.WriteString(`Hello, Пщ!`)
  73. generators.Generate(m, output, fm.MimeType)
  74. assert.For(output.Close() == nil, 20)
  75. }
  76. func TestTables(t *testing.T) {
  77. table := func(fm *mappers.Formatter) {
  78. tm := &mappers.TableMapper{}
  79. tm.ConnectTo(fm)
  80. tm.Write("test", 5, 10)
  81. tt := tm.List["test"]
  82. tm.WriteColumns(tt, 4)
  83. tm.WriteRows(tt, 3)
  84. tm.Span(tt, 0, 0, 1, 3)
  85. tm.Pos(tt, 0, 0).WritePara("Hello, table world!")
  86. }
  87. {
  88. output, _ := os.OpenFile("test3.odf", os.O_CREATE|os.O_WRONLY, 0666)
  89. m := model.ModelFactory()
  90. fm := &mappers.Formatter{}
  91. fm.ConnectTo(m)
  92. fm.MimeType = xmlns.MimeText
  93. fm.Init()
  94. table(fm)
  95. generators.Generate(m, output, fm.MimeType)
  96. assert.For(output.Close() == nil, 20)
  97. }
  98. {
  99. output, _ := os.OpenFile("test4.odf", os.O_CREATE|os.O_WRONLY, 0666)
  100. m := model.ModelFactory()
  101. fm := &mappers.Formatter{}
  102. fm.ConnectTo(m)
  103. fm.MimeType = xmlns.MimeSpreadsheet
  104. fm.Init()
  105. table(fm)
  106. generators.Generate(m, output, fm.MimeType)
  107. assert.For(output.Close() == nil, 20)
  108. }
  109. }