diff --git a/gnuplotrb.gemspec b/gnuplotrb.gemspec index 7f853c5..4f24383 100644 --- a/gnuplotrb.gemspec +++ b/gnuplotrb.gemspec @@ -26,5 +26,6 @@ Gem::Specification.new do |spec| spec.add_development_dependency 'rubocop', '~> 0.29' spec.add_development_dependency 'codeclimate-test-reporter' spec.add_development_dependency 'chunky_png' + spec.add_development_dependency 'simplecov' spec.add_development_dependency 'daru' end diff --git a/lib/gnuplotrb/plot.rb b/lib/gnuplotrb/plot.rb index 59ffcc2..1fb46f6 100644 --- a/lib/gnuplotrb/plot.rb +++ b/lib/gnuplotrb/plot.rb @@ -284,6 +284,7 @@ def parse_datasets_array(datasets) when Hamster::Vector datasets[0] when (defined?(Daru) ? Daru::DataFrame : nil) + set_name_from_daru_dataframe(datasets[0]) Hamster::Vector.new(datasets[0].map { |ds| dataset_from_any(ds) }) else Hamster::Vector.new(datasets.map { |ds| dataset_from_any(ds) }) @@ -295,5 +296,9 @@ def parse_datasets_array(datasets) def new_with_options(options) self.class.new(@datasets, options) end + + def set_name_from_daru_dataframe(dataframe) + self.title = dataframe.name unless title + end end end diff --git a/spec/plot_spec.rb b/spec/plot_spec.rb index d9af3b8..41f6a7b 100644 --- a/spec/plot_spec.rb +++ b/spec/plot_spec.rb @@ -16,11 +16,6 @@ @title = 'Awesome spec' @formula = %w(sin(x) cos(x) exp(-x)) @options = { title: @title, term: 'dumb' } - @df = Daru::DataFrame.new( - Build: [312, 630, 315, 312], - Test: [525, 1050, 701, 514], - Deploy: [215, 441, 370, 220] - ) end it 'should be created out of sequence of datasets' do @@ -38,10 +33,38 @@ expect(plot.title).to eql(@title) end - it 'should be created out of Daru::DataFrame' do - p = Plot.new(@df) - expect(p).to be_an_instance_of(Plot) - expect(p.datasets.size).to be_eql(3) + context 'creation out of Daru::DataFrame' do + let(:df) do + Daru::DataFrame.new( + { + Build: [312, 630, 315, 312], + Test: [525, 1050, 701, 514], + Deploy: [215, 441, 370, 220] + }, + index: [0, 1, 2, 3], + name: 'Dummy DataFrame' + ) + end + + subject { Plot.new(df) } + + it { is_expected.to be_an_instance_of Plot } + + it 'creates datasets for each column except index' do + expect(subject.datasets.size).to be 3 + end + + it 'takes name for plot from DataFrame' do + expect(subject.title).to eql(df.name) + end + + context 'with title option given' do + subject { Plot.new(df, title: 'Not a DataFrame') } + + it "uses title option instead of DataFrame name" do + expect(subject.title).not_to eql(df.name) + end + end end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 497d914..7642e57 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,5 +1,4 @@ require 'simplecov' -require 'codeclimate-test-reporter' require 'digest' require 'chunky_png' require 'digest/md5'