factbase 0.0.20 → 0.0.21

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fd5f2d977ba317805b5306d1a7a04c6f26e8cd6be228c254fdcd6ae322c9ecfb
4
- data.tar.gz: a0f30e312586a23952f0df00a2ddf16de2818cafca8043d03acce21a0fbfa29b
3
+ metadata.gz: dd8e28cf7e8e84fc0364bb8780775592aa86c415a05a49d4edd88bbc9a717a80
4
+ data.tar.gz: ba7c821a3d229cb5f8b0e9fd1e632cd6d2e69c33eacb6b49751a5dd92902a23a
5
5
  SHA512:
6
- metadata.gz: 056656b1a3034c5e5e7025de734767d5c42957ba02e2f276a55a4257f4adaf3e01bf15b28488a8fd7727718f9d36980872d80cb5f63c0cf0a85675c93d6e712c
7
- data.tar.gz: 1639980c0f9de4db14857068f97f5b3931027aa1ec49b3bdbe402828c017dc4c8b0bcd0469f6d17f0329cd3008748e06d044a0448fef4f2af4f6dce6e930f4c6
6
+ metadata.gz: 897308019e1fb3e05bad6e47ac06c39ec91250981e1b0206600a9a5620cb03b29c9dac866640994ac077e6bc3c418b5ea8aec7878e1e2b4587bab6d77b2cffb7
7
+ data.tar.gz: 50172f65e3b8e40a30ec37155264c464b6a2849152ff9752270a38e8610c022506cd4b69cc1ed6869b2b8ecaa6056e3976d48a73642b067ffaedfc28ad887959
data/factbase.gemspec CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |s|
26
26
  s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
27
27
  s.required_ruby_version = '>=2.3'
28
28
  s.name = 'factbase'
29
- s.version = '0.0.20'
29
+ s.version = '0.0.21'
30
30
  s.license = 'MIT'
31
31
  s.summary = 'Factbase'
32
32
  s.description = 'Fact base in memory and on disc'
@@ -85,7 +85,7 @@ class Factbase::Looged
85
85
  r = @fact.method_missing(*args)
86
86
  k = args[0].to_s
87
87
  v = args[1]
88
- @loog.debug("Set '#{k[0..-2]}' to '#{v.to_s.inspect}' (#{v.class})") if k.end_with?('=')
88
+ @loog.debug("Set '#{k[0..-2]}' to #{v.to_s.inspect} (#{v.class})") if k.end_with?('=')
89
89
  r
90
90
  end
91
91
 
data/lib/factbase/term.rb CHANGED
@@ -124,7 +124,10 @@ class Factbase::Term
124
124
  v = fact[k]
125
125
  return false if v.nil?
126
126
  v = [v] unless v.is_a?(Array)
127
- v.any? { |vv| vv.send(op, @operands[1]) }
127
+ v.any? do |vv|
128
+ vv = vv.floor if vv.is_a?(Time) && op == :==
129
+ vv.send(op, @operands[1])
130
+ end
128
131
  end
129
132
 
130
133
  def assert_args(num)
@@ -74,7 +74,7 @@ class TestLooged < Minitest::Test
74
74
  [
75
75
  'Inserted fact #1',
76
76
  'Inserted fact #2',
77
- 'Set \'bar\' to \'"3"\' (Integer)',
77
+ 'Set \'bar\' to "3" (Integer)',
78
78
  'Found 1 fact(s) by \'(exists bar)\'',
79
79
  'Deleted 2 fact(s) by \'(not (exists bar))\''
80
80
  ].each do |s|
@@ -21,6 +21,7 @@
21
21
  # SOFTWARE.
22
22
 
23
23
  require 'minitest/autorun'
24
+ require 'time'
24
25
  require_relative '../../lib/factbase'
25
26
  require_relative '../../lib/factbase/query'
26
27
 
@@ -62,6 +63,14 @@ class TestQuery < Minitest::Test
62
63
  end
63
64
  end
64
65
 
66
+ def test_simple_parsing_with_time
67
+ maps = []
68
+ now = Time.now.utc
69
+ maps << { 'foo' => now }
70
+ q = Factbase::Query.new(maps, Mutex.new, "(eq foo #{now.iso8601})")
71
+ assert_equal(1, q.each.to_a.size)
72
+ end
73
+
65
74
  def test_simple_deleting
66
75
  maps = []
67
76
  maps << { 'foo' => [42] }
@@ -44,6 +44,13 @@ class TestTerm < Minitest::Test
44
44
  assert(!t.matches?(fact('bar' => [])))
45
45
  end
46
46
 
47
+ def test_eq_matching_time
48
+ now = Time.now
49
+ t = Factbase::Term.new(:eq, [:foo, Time.parse(now.iso8601)])
50
+ assert(t.matches?(fact('foo' => now)))
51
+ assert(t.matches?(fact('foo' => [now, Time.now])))
52
+ end
53
+
47
54
  def test_lt_matching
48
55
  t = Factbase::Term.new(:lt, [:foo, 42])
49
56
  assert(t.matches?(fact('foo' => [10])))
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: factbase
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.20
4
+ version: 0.0.21
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko