{"action":"created","comment":{"url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/pulls/comments/93800243","pull_request_review_id":14337329,"id":93800243,"diff_hunk":"@@ -17,62 +17,45 @@ public class JpegTests\n \n         public JpegTests(ITestOutputHelper output)\n         {\n-            Output = output;\n+            this.Output = output;\n         }\n+        public static IEnumerable<string> AllJpegFiles => TestImages.Jpeg.All;\n \n-        protected string CreateTestOutputFile(string fileName)\n-        {\n-            if (!Directory.Exists(TestOutputDirectory))\n-            {\n-                Directory.CreateDirectory(TestOutputDirectory);\n-            }\n-\n-            //string id = Guid.NewGuid().ToString().Substring(0, 4);\n-\n-            string ext = Path.GetExtension(fileName);\n-            fileName = Path.GetFileNameWithoutExtension(fileName);\n-\n-            return $\"{TestOutputDirectory}/{fileName}{ext}\";\n-        }\n-\n-        protected Stream CreateOutputStream(string fileName)\n-        {\n-            fileName = CreateTestOutputFile(fileName);\n-            Output?.WriteLine(\"Opened for write: \"+fileName);\n-            return File.OpenWrite(fileName);\n-        }\n-\n-        public static IEnumerable<object[]> AllJpegFiles\n-            => TestImages.Jpeg.All.Select(file => new object[] {TestFile.Create(file)});\n-\n+        // TODO: Turned off PixelTypes.All to be CI-friendly, what should be the practice?","path":"tests/ImageSharp.Tests/Formats/Jpg/JpegTests.cs","position":43,"original_position":43,"commit_id":"8be1a38e4fa48a5c6079e42d6e2c00223bd42b20","original_commit_id":"8be1a38e4fa48a5c6079e42d6e2c00223bd42b20","user":{"login":"dlemstra","id":10426229,"avatar_url":"https://avatars.githubusercontent.com/u/10426229?v=3","gravatar_id":"","url":"https://api.github.com/users/dlemstra","html_url":"https://github.com/dlemstra","followers_url":"https://api.github.com/users/dlemstra/followers","following_url":"https://api.github.com/users/dlemstra/following{/other_user}","gists_url":"https://api.github.com/users/dlemstra/gists{/gist_id}","starred_url":"https://api.github.com/users/dlemstra/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dlemstra/subscriptions","organizations_url":"https://api.github.com/users/dlemstra/orgs","repos_url":"https://api.github.com/users/dlemstra/repos","events_url":"https://api.github.com/users/dlemstra/events{/privacy}","received_events_url":"https://api.github.com/users/dlemstra/received_events","type":"User","site_admin":false},"body":"All is used in the `PixelAccessorTests` but we really don't want to use it here :)","created_at":"2016-12-23T20:34:44Z","updated_at":"2016-12-23T20:34:45Z","html_url":"https://github.com/JimBobSquarePants/ImageSharp/pull/57#discussion_r93800243","pull_request_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/pulls/57","_links":{"self":{"href":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/pulls/comments/93800243"},"html":{"href":"https://github.com/JimBobSquarePants/ImageSharp/pull/57#discussion_r93800243"},"pull_request":{"href":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/pulls/57"}}},"pull_request":{"url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/pulls/57","id":99202716,"html_url":"https://github.com/JimBobSquarePants/ImageSharp/pull/57","diff_url":"https://github.com/JimBobSquarePants/ImageSharp/pull/57.diff","patch_url":"https://github.com/JimBobSquarePants/ImageSharp/pull/57.patch","issue_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/issues/57","number":57,"state":"open","locked":false,"title":"xUnit TestUtilities Round2","user":{"login":"antonfirsov","id":6835152,"avatar_url":"https://avatars.githubusercontent.com/u/6835152?v=3","gravatar_id":"","url":"https://api.github.com/users/antonfirsov","html_url":"https://github.com/antonfirsov","followers_url":"https://api.github.com/users/antonfirsov/followers","following_url":"https://api.github.com/users/antonfirsov/following{/other_user}","gists_url":"https://api.github.com/users/antonfirsov/gists{/gist_id}","starred_url":"https://api.github.com/users/antonfirsov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/antonfirsov/subscriptions","organizations_url":"https://api.github.com/users/antonfirsov/orgs","repos_url":"https://api.github.com/users/antonfirsov/repos","events_url":"https://api.github.com/users/antonfirsov/events{/privacy}","received_events_url":"https://api.github.com/users/antonfirsov/received_events","type":"User","site_admin":false},"body":"Updated version of #42\r\n\r\n- Core class:\r\n`TestImageProvider<TColor>`\r\n- Support for testing multiple pixel formats with a single theory using the [PixelTypes](https://github.com/antonfirsov/ImageSharp/blob/test-utils-fixed/tests/ImageSharp.Tests/TestUtilities/PixelTypes.cs) flag enum, which triggers a `TColor` substitution\r\n- Support for taking test images from multiple sources (File, blank, generated etc.) with a custom `DataAttribute` specializations (`[WithBlankImage]`, `[WithFile]`, `[WithFileCollection]`, `[WithMemberFactory]` .. etc)\r\n- Added several new test cases to [PixelAccessorTests](https://github.com/antonfirsov/ImageSharp/blob/test-utils-fixed/tests/ImageSharp.Tests/Image/PixelAccessorTests.cs) which are using `TestImageProvider<TColor>`\r\n- Updated  [JpegTests](https://github.com/antonfirsov/ImageSharp/blob/test-utils-fixed/tests/ImageSharp.Tests/Formats/Jpg/JpegTests.cs) to use `TestImageProvider<TColor>`\r\n\r\nSample application:\r\n```\r\npublic static IEnumerable<string> AllJpegFiles => TestImages.Jpeg.All;\r\n\r\n[Theory]\r\n[WithFileCollection(nameof(AllJpegFiles), PixelTypes.Color | PixelTypes.ColorWithDefaultImageClass | PixelTypes.Argb)]\r\npublic void OpenJpeg_SaveBmp<TColor>(TestImageProvider<TColor> provider)\r\n    where TColor : struct, IPackedPixel, IEquatable<TColor>\r\n{\r\n    var image = provider.GetImage();\r\n\r\n    provider.Utility.SaveTestOutputFile(image, \"bmp\");\r\n}\r\n```\r\n\r\nMore examples in [TestImageProviderTests.cs](https://github.com/antonfirsov/ImageSharp/blob/test-utils-fixed/tests/ImageSharp.Tests/TestUtilities/Tests/TestImageProviderTests.cs).\r\n\r\nOther:\r\n- Added new constructor to `PixelArea<T>`","created_at":"2016-12-23T04:48:35Z","updated_at":"2016-12-23T20:34:45Z","closed_at":null,"merged_at":null,"merge_commit_sha":"10e47a73c3d5f2950a602fd1954edff84042991e","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/pulls/57/commits","review_comments_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/pulls/57/comments","review_comment_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/pulls/comments{/number}","comments_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/issues/57/comments","statuses_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/statuses/8be1a38e4fa48a5c6079e42d6e2c00223bd42b20","head":{"label":"antonfirsov:test-utils-fixed","ref":"test-utils-fixed","sha":"8be1a38e4fa48a5c6079e42d6e2c00223bd42b20","user":{"login":"antonfirsov","id":6835152,"avatar_url":"https://avatars.githubusercontent.com/u/6835152?v=3","gravatar_id":"","url":"https://api.github.com/users/antonfirsov","html_url":"https://github.com/antonfirsov","followers_url":"https://api.github.com/users/antonfirsov/followers","following_url":"https://api.github.com/users/antonfirsov/following{/other_user}","gists_url":"https://api.github.com/users/antonfirsov/gists{/gist_id}","starred_url":"https://api.github.com/users/antonfirsov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/antonfirsov/subscriptions","organizations_url":"https://api.github.com/users/antonfirsov/orgs","repos_url":"https://api.github.com/users/antonfirsov/repos","events_url":"https://api.github.com/users/antonfirsov/events{/privacy}","received_events_url":"https://api.github.com/users/antonfirsov/received_events","type":"User","site_admin":false},"repo":{"id":73124065,"name":"ImageSharp","full_name":"antonfirsov/ImageSharp","owner":{"login":"antonfirsov","id":6835152,"avatar_url":"https://avatars.githubusercontent.com/u/6835152?v=3","gravatar_id":"","url":"https://api.github.com/users/antonfirsov","html_url":"https://github.com/antonfirsov","followers_url":"https://api.github.com/users/antonfirsov/followers","following_url":"https://api.github.com/users/antonfirsov/following{/other_user}","gists_url":"https://api.github.com/users/antonfirsov/gists{/gist_id}","starred_url":"https://api.github.com/users/antonfirsov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/antonfirsov/subscriptions","organizations_url":"https://api.github.com/users/antonfirsov/orgs","repos_url":"https://api.github.com/users/antonfirsov/repos","events_url":"https://api.github.com/users/antonfirsov/events{/privacy}","received_events_url":"https://api.github.com/users/antonfirsov/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/antonfirsov/ImageSharp","description":":camera: A cross-platform library for the processing of image files; written in C#","fork":true,"url":"https://api.github.com/repos/antonfirsov/ImageSharp","forks_url":"https://api.github.com/repos/antonfirsov/ImageSharp/forks","keys_url":"https://api.github.com/repos/antonfirsov/ImageSharp/keys{/key_id}","collaborators_url":"https://api.github.com/repos/antonfirsov/ImageSharp/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/antonfirsov/ImageSharp/teams","hooks_url":"https://api.github.com/repos/antonfirsov/ImageSharp/hooks","issue_events_url":"https://api.github.com/repos/antonfirsov/ImageSharp/issues/events{/number}","events_url":"https://api.github.com/repos/antonfirsov/ImageSharp/events","assignees_url":"https://api.github.com/repos/antonfirsov/ImageSharp/assignees{/user}","branches_url":"https://api.github.com/repos/antonfirsov/ImageSharp/branches{/branch}","tags_url":"https://api.github.com/repos/antonfirsov/ImageSharp/tags","blobs_url":"https://api.github.com/repos/antonfirsov/ImageSharp/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/antonfirsov/ImageSharp/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/antonfirsov/ImageSharp/git/refs{/sha}","trees_url":"https://api.github.com/repos/antonfirsov/ImageSharp/git/trees{/sha}","statuses_url":"https://api.github.com/repos/antonfirsov/ImageSharp/statuses/{sha}","languages_url":"https://api.github.com/repos/antonfirsov/ImageSharp/languages","stargazers_url":"https://api.github.com/repos/antonfirsov/ImageSharp/stargazers","contributors_url":"https://api.github.com/repos/antonfirsov/ImageSharp/contributors","subscribers_url":"https://api.github.com/repos/antonfirsov/ImageSharp/subscribers","subscription_url":"https://api.github.com/repos/antonfirsov/ImageSharp/subscription","commits_url":"https://api.github.com/repos/antonfirsov/ImageSharp/commits{/sha}","git_commits_url":"https://api.github.com/repos/antonfirsov/ImageSharp/git/commits{/sha}","comments_url":"https://api.github.com/repos/antonfirsov/ImageSharp/comments{/number}","issue_comment_url":"https://api.github.com/repos/antonfirsov/ImageSharp/issues/comments{/number}","contents_url":"https://api.github.com/repos/antonfirsov/ImageSharp/contents/{+path}","compare_url":"https://api.github.com/repos/antonfirsov/ImageSharp/compare/{base}...{head}","merges_url":"https://api.github.com/repos/antonfirsov/ImageSharp/merges","archive_url":"https://api.github.com/repos/antonfirsov/ImageSharp/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/antonfirsov/ImageSharp/downloads","issues_url":"https://api.github.com/repos/antonfirsov/ImageSharp/issues{/number}","pulls_url":"https://api.github.com/repos/antonfirsov/ImageSharp/pulls{/number}","milestones_url":"https://api.github.com/repos/antonfirsov/ImageSharp/milestones{/number}","notifications_url":"https://api.github.com/repos/antonfirsov/ImageSharp/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/antonfirsov/ImageSharp/labels{/name}","releases_url":"https://api.github.com/repos/antonfirsov/ImageSharp/releases{/id}","deployments_url":"https://api.github.com/repos/antonfirsov/ImageSharp/deployments","created_at":"2016-11-07T21:50:02Z","updated_at":"2016-11-07T21:50:04Z","pushed_at":"2016-12-23T14:23:31Z","git_url":"git://github.com/antonfirsov/ImageSharp.git","ssh_url":"git@github.com:antonfirsov/ImageSharp.git","clone_url":"https://github.com/antonfirsov/ImageSharp.git","svn_url":"https://github.com/antonfirsov/ImageSharp","homepage":"","size":24702,"stargazers_count":0,"watchers_count":0,"language":"C#","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"JimBobSquarePants:master","ref":"master","sha":"f62cf8c4920508b2fbdec8aa88abca48dc3f78d7","user":{"login":"JimBobSquarePants","id":385879,"avatar_url":"https://avatars.githubusercontent.com/u/385879?v=3","gravatar_id":"","url":"https://api.github.com/users/JimBobSquarePants","html_url":"https://github.com/JimBobSquarePants","followers_url":"https://api.github.com/users/JimBobSquarePants/followers","following_url":"https://api.github.com/users/JimBobSquarePants/following{/other_user}","gists_url":"https://api.github.com/users/JimBobSquarePants/gists{/gist_id}","starred_url":"https://api.github.com/users/JimBobSquarePants/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JimBobSquarePants/subscriptions","organizations_url":"https://api.github.com/users/JimBobSquarePants/orgs","repos_url":"https://api.github.com/users/JimBobSquarePants/repos","events_url":"https://api.github.com/users/JimBobSquarePants/events{/privacy}","received_events_url":"https://api.github.com/users/JimBobSquarePants/received_events","type":"User","site_admin":false},"repo":{"id":72174164,"name":"ImageSharp","full_name":"JimBobSquarePants/ImageSharp","owner":{"login":"JimBobSquarePants","id":385879,"avatar_url":"https://avatars.githubusercontent.com/u/385879?v=3","gravatar_id":"","url":"https://api.github.com/users/JimBobSquarePants","html_url":"https://github.com/JimBobSquarePants","followers_url":"https://api.github.com/users/JimBobSquarePants/followers","following_url":"https://api.github.com/users/JimBobSquarePants/following{/other_user}","gists_url":"https://api.github.com/users/JimBobSquarePants/gists{/gist_id}","starred_url":"https://api.github.com/users/JimBobSquarePants/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JimBobSquarePants/subscriptions","organizations_url":"https://api.github.com/users/JimBobSquarePants/orgs","repos_url":"https://api.github.com/users/JimBobSquarePants/repos","events_url":"https://api.github.com/users/JimBobSquarePants/events{/privacy}","received_events_url":"https://api.github.com/users/JimBobSquarePants/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/JimBobSquarePants/ImageSharp","description":":camera: A cross-platform library for the processing of image files; written in C#","fork":false,"url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp","forks_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/forks","keys_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/keys{/key_id}","collaborators_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/teams","hooks_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/hooks","issue_events_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/issues/events{/number}","events_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/events","assignees_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/assignees{/user}","branches_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/branches{/branch}","tags_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/tags","blobs_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/git/refs{/sha}","trees_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/git/trees{/sha}","statuses_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/statuses/{sha}","languages_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/languages","stargazers_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/stargazers","contributors_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/contributors","subscribers_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/subscribers","subscription_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/subscription","commits_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/commits{/sha}","git_commits_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/git/commits{/sha}","comments_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/comments{/number}","issue_comment_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/issues/comments{/number}","contents_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/contents/{+path}","compare_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/compare/{base}...{head}","merges_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/merges","archive_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/downloads","issues_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/issues{/number}","pulls_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/pulls{/number}","milestones_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/milestones{/number}","notifications_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/labels{/name}","releases_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/releases{/id}","deployments_url":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/deployments","created_at":"2016-10-28T04:46:36Z","updated_at":"2016-12-23T12:49:04Z","pushed_at":"2016-12-23T14:31:52Z","git_url":"git://github.com/JimBobSquarePants/ImageSharp.git","ssh_url":"git@github.com:JimBobSquarePants/ImageSharp.git","clone_url":"https://github.com/JimBobSquarePants/ImageSharp.git","svn_url":"https://github.com/JimBobSquarePants/ImageSharp","homepage":"","size":21225,"stargazers_count":254,"watchers_count":254,"language":"C#","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":37,"mirror_url":null,"open_issues_count":22,"forks":37,"open_issues":22,"watchers":254,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/pulls/57"},"html":{"href":"https://github.com/JimBobSquarePants/ImageSharp/pull/57"},"issue":{"href":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/issues/57"},"comments":{"href":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/issues/57/comments"},"review_comments":{"href":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/pulls/57/comments"},"review_comment":{"href":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/pulls/57/commits"},"statuses":{"href":"https://api.github.com/repos/JimBobSquarePants/ImageSharp/statuses/8be1a38e4fa48a5c6079e42d6e2c00223bd42b20"}}}}
{"actor":{"display_login":"dlemstra"}}