Skip to content

Commit

Permalink
Merge pull request #3 from dmitrybarabash/main
Browse files Browse the repository at this point in the history
Added the ability to add resource as a cover image
  • Loading branch information
jonthysell authored Apr 21, 2024
2 parents 24ca7ae + 3e92f9e commit 9606a29
Show file tree
Hide file tree
Showing 12 changed files with 287 additions and 323 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@v1
with:
dotnet-version: '6.0.x'
dotnet-version: '8.0.x'

- name: Checkout
uses: actions/checkout@v2
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@v1
with:
dotnet-version: '6.0.x'
dotnet-version: '8.0.x'

- name: Checkout
uses: actions/checkout@v2
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pub.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@v1
with:
dotnet-version: '6.0.x'
dotnet-version: '8.0.x'

- name: Checkout
uses: actions/checkout@v2
Expand Down
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ Using QuickEPUB is as easy as:

```cs
// Create an Epub instance
Epub doc = new Epub("Book Title", "Author Name");
var doc = new Epub("Book Title", "Author Name");

// Adding sections of HTML content
doc.AddSection("Chapter 1", "<p>Lorem ipsum dolor sit amet...</p>");
Expand All @@ -41,7 +41,7 @@ doc.AddSection("Chapter 1", "<p>Lorem ipsum dolor sit amet...</p>");
doc.AddSection("Chapter 2", "<p><img src=\"image.jpg\" alt=\"Image\"/></p>");

// Adding images that are referenced in any of the sections
using (FileStream jpgStream = new FileStream("image.jpg", FileMode.Open))
using (var jpgStream = new FileStream("image.jpg", FileMode.Open))
{
doc.AddResource("image.jpg", EpubResourceType.JPEG, jpgStream);
}
Expand All @@ -50,13 +50,13 @@ using (FileStream jpgStream = new FileStream("image.jpg", FileMode.Open))
doc.AddSection("Chapter 3", "<p class=\"body-text\">Lorem ipsum dolor sit amet...</p>", "custom.css");

// Add the CSS file referenced in the HTML content
using (FileStream cssStream = new FileStream("custom.css", FileMode.Open))
using (var cssStream = new FileStream("custom.css", FileMode.Open))
{
doc.AddResource("custom.css", EpubResourceType.CSS, cssStream);
}

// Export the result
using (FileStream fs = new FileStream("sample.epub", FileMode.Create))
using (var fs = new FileStream("sample.epub", FileMode.Create))
{
doc.Export(fs);
}
Expand All @@ -74,7 +74,7 @@ The EPUB will also contain the two specified resource files: `image.jpg` and `cu

Building QuickEPUB requires:

1. A PC with the [.NET 6 SDK](https://dotnet.microsoft.com/download/dotnet/6.0) installed
1. A PC with the [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8.0) installed
2. The [QuickEPUB source](https://github.com/jonthysell/QuickEPUB)

Then you should be able to run the following command to build QuickEPUB from within its source folder:
Expand Down
25 changes: 11 additions & 14 deletions src/QuickEPUB.Test/EpubResourceTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@

using System;
using System.IO;

using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace QuickEPUB.Test
Expand All @@ -14,9 +13,9 @@ public class EpubResourceTests
[TestMethod]
public void EpubResource_NewCSSTest()
{
using FileStream fs = new FileStream("TestAssets\\test.css", FileMode.Open);
using var fs = new FileStream("TestAssets\\test.css", FileMode.Open);

EpubResource resource = new EpubResource("test.css", EpubResourceType.CSS, fs);
var resource = new EpubResource("test.css", EpubResourceType.CSS, fs);

Assert.AreEqual("test.css", resource.OutputPath);
Assert.AreEqual(EpubResourceType.CSS, resource.ResourceType);
Expand All @@ -28,9 +27,9 @@ public void EpubResource_NewCSSTest()
[TestMethod]
public void EpubResource_NewImageTest()
{
using FileStream fs = new FileStream("TestAssets\\test.png", FileMode.Open);
using var fs = new FileStream("TestAssets\\test.png", FileMode.Open);

EpubResource resource = new EpubResource("test.png", EpubResourceType.PNG, fs);
var resource = new EpubResource("test.png", EpubResourceType.PNG, fs);

Assert.AreEqual("test.png", resource.OutputPath);
Assert.AreEqual(EpubResourceType.PNG, resource.ResourceType);
Expand All @@ -42,9 +41,9 @@ public void EpubResource_NewImageTest()
[TestMethod]
public void EpubResource_NewFontTest()
{
using FileStream fs = new FileStream("TestAssets\\test.ttf", FileMode.Open);
using var fs = new FileStream("TestAssets\\test.ttf", FileMode.Open);

EpubResource resource = new EpubResource("test.ttf", EpubResourceType.TTF, fs);
var resource = new EpubResource("test.ttf", EpubResourceType.TTF, fs);

Assert.AreEqual("test.ttf", resource.OutputPath);
Assert.AreEqual(EpubResourceType.TTF, resource.ResourceType);
Expand All @@ -57,26 +56,24 @@ public void EpubResource_NewFontTest()
[ExpectedException(typeof(ArgumentNullException))]
public void EpubResource_NewNullOutputPathTest()
{
using FileStream fs = new FileStream("TestAssets\\test.css", FileMode.Open);
using var fs = new FileStream("TestAssets\\test.css", FileMode.Open);
new EpubResource(null, EpubResourceType.CSS, fs);
}

[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void EpubResource_NewEmptyOutputPathTest()
{
using FileStream fs = new FileStream("TestAssets\\test.css", FileMode.Open);

new EpubResource("", EpubResourceType.CSS, fs);
using var fs = new FileStream("TestAssets\\test.css", FileMode.Open);
new EpubResource(string.Empty, EpubResourceType.CSS, fs);
}

[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void EpubResource_NewWhitespaceOutputPathTest()
{
using FileStream fs = new FileStream("TestAssets\\test.css", FileMode.Open);

new EpubResource("", EpubResourceType.CSS, fs);
using var fs = new FileStream("TestAssets\\test.css", FileMode.Open);
new EpubResource(string.Empty, EpubResourceType.CSS, fs);

}

Expand Down
5 changes: 2 additions & 3 deletions src/QuickEPUB.Test/EpubSectionTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
// Licensed under the MIT License.

using System;

using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace QuickEPUB.Test
Expand All @@ -13,7 +12,7 @@ public class EpubSectionTests
[TestMethod]
public void EpubSection_NewTest()
{
EpubSection section = new EpubSection("Test Title", "<p>Test Contents</p>");
var section = new EpubSection("Test Title", "<p>Test Contents</p>");
Assert.AreEqual("Test Title", section.Title);
Assert.AreEqual("<p>Test Contents</p>", section.BodyHtml);
Assert.IsFalse(section.HasCss);
Expand All @@ -23,7 +22,7 @@ public void EpubSection_NewTest()
[TestMethod]
public void EpubSection_NewWithCSSTest()
{
EpubSection section = new EpubSection("Test Title", "<p>Test Contents</p>", "test.css");
var section = new EpubSection("Test Title", "<p>Test Contents</p>", "test.css");
Assert.AreEqual("Test Title", section.Title);
Assert.AreEqual("<p>Test Contents</p>", section.BodyHtml);
Assert.IsTrue(section.HasCss);
Expand Down
41 changes: 20 additions & 21 deletions src/QuickEPUB.Test/EpubTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
using System;
using System.IO;
using System.Linq;

using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace QuickEPUB.Test
Expand All @@ -15,7 +14,7 @@ public class EpubTests
[TestMethod]
public void Epub_NewTest()
{
Epub doc = new Epub("Test Title", "Test Author");
var doc = new Epub("Test Title", "Test Author");
Assert.AreEqual("Test Title", doc.Title);
Assert.AreEqual("Test Author", doc.Author);
}
Expand Down Expand Up @@ -65,7 +64,7 @@ public void Epub_NewWhitespaceAuthorTest()
[TestMethod]
public void Epub_AddSectionTest()
{
Epub doc = new Epub("Test Title", "Test Author");
var doc = new Epub("Test Title", "Test Author");
Assert.IsNotNull(doc.Sections);
Assert.AreEqual(0, doc.Sections.Count());

Expand All @@ -82,11 +81,11 @@ public void Epub_AddSectionTest()
[TestMethod]
public void Epub_AddCSSResourceTest()
{
Epub doc = new Epub("Test Title", "Test Author");
var doc = new Epub("Test Title", "Test Author");
Assert.IsNotNull(doc.Resources);
Assert.AreEqual(0, doc.Resources.Count());

using FileStream fs = new FileStream("TestAssets\\test.css", FileMode.Open);
using var fs = new FileStream("TestAssets\\test.css", FileMode.Open);

doc.AddResource("test.css", EpubResourceType.CSS, fs);
Assert.AreEqual(1, doc.Resources.Count());
Expand All @@ -101,11 +100,11 @@ public void Epub_AddCSSResourceTest()
[TestMethod]
public void Epub_AddImageResourceTest()
{
Epub doc = new Epub("Test Title", "Test Author");
var doc = new Epub("Test Title", "Test Author");
Assert.IsNotNull(doc.Resources);
Assert.AreEqual(0, doc.Resources.Count());

using FileStream fs = new FileStream("TestAssets\\test.png", FileMode.Open);
using var fs = new FileStream("TestAssets\\test.png", FileMode.Open);

doc.AddResource("test.png", EpubResourceType.PNG, fs);
Assert.AreEqual(1, doc.Resources.Count());
Expand All @@ -120,11 +119,11 @@ public void Epub_AddImageResourceTest()
[TestMethod]
public void Epub_AddFontResourceTest()
{
Epub doc = new Epub("Test Title", "Test Author");
var doc = new Epub("Test Title", "Test Author");
Assert.IsNotNull(doc.Resources);
Assert.AreEqual(0, doc.Resources.Count());

using FileStream fs = new FileStream("TestAssets\\test.ttf", FileMode.Open);
using var fs = new FileStream("TestAssets\\test.ttf", FileMode.Open);

doc.AddResource("test.ttf", EpubResourceType.TTF, fs);
Assert.AreEqual(1, doc.Resources.Count());
Expand All @@ -139,53 +138,53 @@ public void Epub_AddFontResourceTest()
[TestMethod]
public void Epub_ExportEpubTest()
{
Epub doc = new Epub("Test Title", "Test Author");
var doc = new Epub("Test Title", "Test Author");
doc.AddSection("Section 1", "<p>This is section 1.</p>");

using FileStream fs = new FileStream("Epub_ExportEpubTest.epub", FileMode.Create);
using var fs = new FileStream("Epub_ExportEpubTest.epub", FileMode.Create);
doc.Export(fs);
}

[TestMethod]
public void Epub_ExportEpubWithCSSResourceTest()
{
Epub doc = new Epub("Test Title", "Test Author");
var doc = new Epub("Test Title", "Test Author");
doc.AddSection("Section 1", "<p>This is section 1.</p>", "test.css");

using FileStream cssStream = new FileStream("TestAssets\\test.css", FileMode.Open);
using var cssStream = new FileStream("TestAssets\\test.css", FileMode.Open);
doc.AddResource("test.css", EpubResourceType.CSS, cssStream);

using FileStream fs = new FileStream("Epub_ExportEpubWithCSSResourceTest.epub", FileMode.Create);
using var fs = new FileStream("Epub_ExportEpubWithCSSResourceTest.epub", FileMode.Create);
doc.Export(fs);
}


[TestMethod]
public void Epub_ExportEpubWithImageResourceTest()
{
Epub doc = new Epub("Test Title", "Test Author");
var doc = new Epub("Test Title", "Test Author");
doc.AddSection("Section 1", "<p><img src=\"test.png\" alt=\"test\"/></p>");

using FileStream pngStream = new FileStream("TestAssets\\test.png", FileMode.Open);
using var pngStream = new FileStream("TestAssets\\test.png", FileMode.Open);
doc.AddResource("test.png", EpubResourceType.PNG, pngStream);

using FileStream fs = new FileStream("Epub_ExportEpubWithImageResourceTest.epub", FileMode.Create);
using var fs = new FileStream("Epub_ExportEpubWithImageResourceTest.epub", FileMode.Create);
doc.Export(fs);
}

[TestMethod]
public void Epub_ExportEpubWithFontResourceTest()
{
Epub doc = new Epub("Test Title", "Test Author");
var doc = new Epub("Test Title", "Test Author");
doc.AddSection("Section 1", "<p style=\"font-family: Test;\">This is section 1.</p>", "test.css");

using FileStream cssStream = new FileStream("TestAssets\\test.css", FileMode.Open);
using var cssStream = new FileStream("TestAssets\\test.css", FileMode.Open);
doc.AddResource("test.css", EpubResourceType.CSS, cssStream);

using FileStream ttfStream = new FileStream("TestAssets\\test.ttf", FileMode.Open);
using var ttfStream = new FileStream("TestAssets\\test.ttf", FileMode.Open);
doc.AddResource("test.ttf", EpubResourceType.TTF, ttfStream);

using FileStream fs = new FileStream("Epub_ExportEpubWithFontResourceTest.epub", FileMode.Create);
using var fs = new FileStream("Epub_ExportEpubWithFontResourceTest.epub", FileMode.Create);
doc.Export(fs);
}
}
Expand Down
12 changes: 6 additions & 6 deletions src/QuickEPUB.Test/QuickEPUB.Test.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<TargetFramework>net8.0</TargetFramework>
<AssemblyName>QuickEPUB.Test</AssemblyName>
<RootNamespace>QuickEPUB.Test</RootNamespace>
<Nullable>enable</Nullable>
Expand All @@ -10,11 +10,11 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.1.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
<PackageReference Include="MSTest.TestAdapter" Version="2.2.8" />
<PackageReference Include="MSTest.TestFramework" Version="2.2.8" />
<PackageReference Include="coverlet.collector" Version="3.1.2">
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.8.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageReference Include="MSTest.TestAdapter" Version="3.1.1" />
<PackageReference Include="MSTest.TestFramework" Version="3.1.1" />
<PackageReference Include="coverlet.collector" Version="6.0.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
Expand Down
Loading

0 comments on commit 9606a29

Please sign in to comment.