Skip to content

Commit

Permalink
Criação de Mais testes e Funções
Browse files Browse the repository at this point in the history
  • Loading branch information
opauloxavier committed Oct 28, 2018
1 parent f7671db commit 37a73d6
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 10 deletions.
8 changes: 4 additions & 4 deletions Manifest.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ version = "0.4.0"

[[CodecZlib]]
deps = ["BinaryProvider", "Libdl", "Pkg", "Test", "TranscodingStreams"]
git-tree-sha1 = "83cb3d65c37ea1364c2d5bf7bcea41843ba645dc"
git-tree-sha1 = "e3df104c84dfc108f0ca203fd7f5bbdc98641ae9"
uuid = "944b1d66-785c-5afd-91f1-9de20f533193"
version = "0.5.0"
version = "0.5.1"

[[Compat]]
deps = ["Base64", "Dates", "DelimitedFiles", "Distributed", "InteractiveUtils", "LibGit2", "Libdl", "LinearAlgebra", "Markdown", "Mmap", "Pkg", "Printf", "REPL", "Random", "Serialization", "SharedArrays", "Sockets", "SparseArrays", "Statistics", "Test", "UUIDs", "Unicode"]
Expand Down Expand Up @@ -112,9 +112,9 @@ version = "1.0.2"

[[Persa]]
deps = ["DataFrames", "Pkg", "SparseArrays", "Statistics", "Test"]
git-tree-sha1 = "eb7d5c17f5157eef230051615330b92e4b8eb3c5"
git-tree-sha1 = "5eaf3e1e6ee2f5694c39d63669b96cc000c7f163"
uuid = "86800b63-3017-5277-aca5-15d7d6a5f2b2"
version = "0.1.0"
version = "0.1.1"

[[Pkg]]
deps = ["Dates", "LibGit2", "Markdown", "Printf", "REPL", "Random", "SHA", "UUIDs"]
Expand Down
8 changes: 8 additions & 0 deletions src/dataset.jl
Original file line number Diff line number Diff line change
Expand Up @@ -62,5 +62,13 @@ function Base.getindex(dataset::DatasetContext, user::Int, item::Int, contextCol
end

context(dataset::DatasetContext) = keys(dataset.metaContext)
context(rating::ContextRating) = keys(rating.context)

Base.size(dataset::DatasetContext) = (Persa.users(dataset), Persa.items(dataset), length(context(dataset)))

# TODO: Reescrever função
# function Base.getindex(dataset::Persa.AbstractDataset, c::Colon, item::Int)
# elements = collect(dataset.ratings[:, item])
# println(elements)
# return [Persa.UserPreference(idx, item, elements[idx]) for idx in findall(!isnan, elements)]
# end
6 changes: 5 additions & 1 deletion src/rating.jl
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ struct ContextRating{T <: Number} <: Persa.AbstractRating{T}
ContextRating(x::T, preference::Persa.Preference{T}, context::Dict{Symbol,Any}) where T <: Number = new{T}(Persa.correct(x, preference), context)
end

Base.isnan(rating::ContextRating{T}) where T <: Number = false
Base.isnan(rating::Persa.MissingRating{T}) where T <: Number = true

Base.zero(::Type{ContextRating{T}}) where T <: Number = Persa.MissingRating{T}()

value(rating::ContextRating) = rating.value
contextValue(rating::ContextRating,contextColumn::Symbol) = rating.context[contextColumn]
value(rating::ContextRating,contextColumn::Symbol) = rating.context[contextColumn]
42 changes: 37 additions & 5 deletions test/datasetTest.jl
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,46 @@

@testset "Index Tests" begin
@testset "Cartesian Index Tests" begin
for i = 1:size(df)[1]
user = df[:user][i]
item = df[:item][i]
contextRating = df[:isWeekend][i]
for context in ContextCF.context(dataset)
@test df[context][i] == dataset[user,item,context]
end
end
end
@testset " Column Index Tests" begin

## por usuário
for u in 1:Persa.users(dataset)
for (user,item,rating) in dataset[user,:]
@test ContextCF.value(dataset[user,item]) == ContextCF.value(rating)
end
end

for i = 1:size(df)[1]
user = df[:user][i]
item = df[:item][i]
contextRating = df[:isWeekend][i]
@test contextRating == dataset[user,item,:isWeekend]
## por item
##Pendente determinar como vai ser o objeto contextRating missing,
# for item in 1:Persa.items(dataset)
# for (user, rating) in dataset1[:, item]
# @test dataset[user, item] == value(rating)
# end
# end
end

@testset "Iterator Tests" begin
## Testa se o valor dos ratings das iterações está correto
for (user, item, rating) in dataset
for context in ContextCF.context(dataset)
@test dataset[user,item,context] == ContextCF.value(rating,context)
end
end

## Testa se todos os itens possuem o Meta dado igual
for (user, item, rating) in dataset
@test ContextCF.context(dataset) == ContextCF.context(rating)
end
end
end
end
end

0 comments on commit 37a73d6

Please sign in to comment.