feat: qol improvements
This commit is contained in:
parent
986e03c974
commit
5bf8c8960b
13 changed files with 810 additions and 0 deletions
86
tests/scraper_spec.lua
Normal file
86
tests/scraper_spec.lua
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
-- Unit tests for web scraping functionality
|
||||
describe("cp.scrape", function()
|
||||
local scrape
|
||||
local mock_responses = {}
|
||||
|
||||
before_each(function()
|
||||
scrape = require("cp.scrape")
|
||||
|
||||
-- Mock HTTP responses for different platforms
|
||||
mock_responses.codeforces_contest = [[
|
||||
<div class="problems">
|
||||
<div class="problem" data-problem-id="A">Problem A</div>
|
||||
<div class="problem" data-problem-id="B">Problem B</div>
|
||||
</div>
|
||||
]]
|
||||
|
||||
mock_responses.codeforces_problem = [[
|
||||
<div class="input">Sample Input</div>
|
||||
<div class="output">Sample Output</div>
|
||||
]]
|
||||
end)
|
||||
|
||||
describe("contest metadata scraping", function()
|
||||
it("scrapes Codeforces contest problems", function()
|
||||
-- Mock HTTP request, test problem list extraction
|
||||
end)
|
||||
|
||||
it("scrapes Atcoder contest problems", function()
|
||||
-- Test Atcoder format
|
||||
end)
|
||||
|
||||
it("scrapes CSES problem list", function()
|
||||
-- Test CSES format
|
||||
end)
|
||||
|
||||
it("handles network errors gracefully", function()
|
||||
-- Test error handling for failed requests
|
||||
end)
|
||||
|
||||
it("handles parsing errors gracefully", function()
|
||||
-- Test error handling for malformed HTML
|
||||
end)
|
||||
end)
|
||||
|
||||
describe("problem scraping", function()
|
||||
it("extracts test cases from Codeforces problems", function()
|
||||
-- Test test case extraction
|
||||
end)
|
||||
|
||||
it("handles multiple test cases correctly", function()
|
||||
-- Test multiple sample inputs/outputs
|
||||
end)
|
||||
|
||||
it("handles problems with no sample cases", function()
|
||||
-- Test edge case handling
|
||||
end)
|
||||
|
||||
it("extracts problem metadata (time limits, etc.)", function()
|
||||
-- Test metadata extraction
|
||||
end)
|
||||
end)
|
||||
|
||||
describe("platform-specific parsing", function()
|
||||
it("handles Codeforces HTML structure", function()
|
||||
-- Test Codeforces-specific parsing
|
||||
end)
|
||||
|
||||
it("handles Atcoder HTML structure", function()
|
||||
-- Test Atcoder-specific parsing
|
||||
end)
|
||||
|
||||
it("handles CSES HTML structure", function()
|
||||
-- Test CSES-specific parsing
|
||||
end)
|
||||
end)
|
||||
|
||||
describe("rate limiting and caching", function()
|
||||
it("respects rate limits", function()
|
||||
-- Test rate limiting behavior
|
||||
end)
|
||||
|
||||
it("uses cached results when appropriate", function()
|
||||
-- Test caching integration
|
||||
end)
|
||||
end)
|
||||
end)
|
||||
Loading…
Add table
Add a link
Reference in a new issue