factbase 0.0.20 → 0.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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