Browse Source

Notenhelfer um Punkte erweitern

hmt 9 years ago
parent
commit
fdb70701be
2 changed files with 47 additions and 0 deletions
  1. 16 0
      lib/schild.rb
  2. 31 0
      specs/notenhelfer_spec.rb

+ 16 - 0
lib/schild.rb

@@ -196,6 +196,22 @@ module SchildErweitert
 
   # Mixin für Notenbezeichnungen
   module NotenHelfer
+    # Noten können als Punkte abgerufen werden:
+    # note[5] => "4-"
+    # oder auch andersherum: note.index("4-") => 5
+    @note = %w[6 5- 5 5+ 4- 4 4+ 3- 3 3+ 2- 2 2+ 1- 1 1+]
+
+    def self.punkte_aus_note(note)
+      return if note.nil?
+      @note.index(note)
+    end
+
+    def self.note_aus_punkten(punkte)
+      return unless punkte && punkte.to_i.between?(0,15)
+      return if (punkte.class == String) && punkte.empty?
+      @note[punkte.to_i]
+    end
+
     # Notenbezeichnung als String
     def note_s(ziffer)
       case ziffer

+ 31 - 0
specs/notenhelfer_spec.rb

@@ -0,0 +1,31 @@
+require "#{File.dirname(__FILE__)}/spec_helper"
+
+describe NotenHelfer do
+  describe 'Noten können in Punkte usw. umgerechnet werden' do
+    it 'Note in Punkte' do
+      SchildErweitert::NotenHelfer.punkte_aus_note("4-").must_equal 4
+      SchildErweitert::NotenHelfer.punkte_aus_note("1+").must_equal 15
+      SchildErweitert::NotenHelfer.punkte_aus_note(nil).must_equal nil
+    end
+
+    it 'Punkte in Note' do
+      SchildErweitert::NotenHelfer.note_aus_punkten("12").must_equal "2+"
+      SchildErweitert::NotenHelfer.note_aus_punkten("2").must_equal "5"
+      SchildErweitert::NotenHelfer.note_aus_punkten(nil).must_equal nil
+      SchildErweitert::NotenHelfer.note_aus_punkten(5).must_equal "4"
+      SchildErweitert::NotenHelfer.note_aus_punkten("17").must_equal nil
+      SchildErweitert::NotenHelfer.note_aus_punkten("").must_equal nil
+    end
+
+    it 'Ziffernnote als String' do
+      class N; include SchildErweitert::NotenHelfer; end
+      n=N.new
+      n.note_s("2+").must_equal "gut"
+      n.note_s("3-").must_equal "befriedigend"
+      n.note_s(nil).must_equal nil
+      n.note_s("E3").must_equal "teilgenommen"
+    end
+  end
+end
+
+