# HG changeset patch # User Christian Urban # Date 1480697131 0 # Node ID 28c8e17ab83a14ac965a87bb6887227e99e3f426 # Parent ff8d075842d55c5c8831a3516f3e053c9408f603 updated diff -r ff8d075842d5 -r 28c8e17ab83a marking/drumb_test2.scala --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/marking/drumb_test2.scala Fri Dec 02 16:45:31 2016 +0000 @@ -0,0 +1,16 @@ +//println("starting test now") + +import scala.concurrent._ +import scala.concurrent.duration._ +import ExecutionContext.Implicits.global +import scala.language.postfixOps + +lazy val f = Future { + assert(get_prices(List("BIDU"), 2004 to 2008) == List(List(None), List(None), + List(Some(6.35)), List(Some(12.241)), + List(Some(38.188)))) +} + + +Await.result(f, 180 second) + diff -r ff8d075842d5 -r 28c8e17ab83a marking/drumb_test3.scala --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/marking/drumb_test3.scala Fri Dec 02 16:45:31 2016 +0000 @@ -0,0 +1,27 @@ +//println("starting test now") + +import scala.concurrent._ +import scala.concurrent.duration._ +import ExecutionContext.Implicits.global +import scala.language.postfixOps + +val test_data = List(List(Some(71.539941), None), List(Some(76.974614), None), + List(Some(65.226685), Some(6.35)), List(Some(78.354649), Some(12.241)), + List(Some(85.517645), Some(38.188))) + +val test_deltas = List(List(Some(0.07596697626574789), None), + List(Some(-0.152620823795232), None), + List(Some(0.20126676681483952), Some(0.9277165354330709)), + List(Some(0.09141762603007778), Some(2.119679764725104))) + +lazy val f = Future { + assert((yearly_yield(test_deltas, 100, 0) - 107).abs <= 2) + assert((yearly_yield(test_deltas, 100, 1) - 85).abs <= 2) + assert((yearly_yield(test_deltas, 100, 2) - 156).abs <= 2) + assert((yearly_yield(test_deltas, 100, 3) - 210).abs <= 2) + assert((investment(List("IBM", "BIDU"), 2004 to 2008, 100) - 298).abs <= 10) +} + + +Await.result(f, 180 second) + diff -r ff8d075842d5 -r 28c8e17ab83a marking/mark01b --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/marking/mark01b Fri Dec 02 16:45:31 2016 +0000 @@ -0,0 +1,107 @@ +#!/bin/bash +set -e + +out=${1:-output} + +echo "" > $out + +echo "Below is the feedback and provisional mark for your submission" >> $out +echo "for assignment 6 (Part 3). Please note all marks are provisional until" >> $out +echo "ratified by the assessment board -- this is not an official" >> $out +echo "results transcript." >> $out +echo "" >> $out + + +#alarm() { perl -e 'alarm shift; exec @ARGV' "$@"; } +#alarm 20 foo arg1 + +# compilation tests + +function scala_compile { + (scala "$1" 2> /dev/null 1> /dev/null) +} + + + +# functional tests + +function scala_assert { + (scala -i "$1" "$2" -e "" 2> /dev/null 1> /dev/null) +} + + +# marks for CW1 part 3 +marks=$(( 0 )) + + +# compilation test +echo "drumb.scala runs?" | tee -a $out + +if (scala_compile drumb.scala) +then + echo " --> success" | tee -a $out + tsts=$(( 0 )) +else + echo " --> scala did not run drumb.scala" | tee -a $out + tsts=$(( 1 )) +fi + + +### get price tests + +if [ $tsts -eq 0 ] +then + echo " get_prices(List(\"BIDU\"), 2004 to 2008) =" | tee -a $out + echo " List(List(None), List(None), List(Some(6.35))," | tee -a $out + echo " List(Some(12.241)), List(Some(38.188)))" | tee -a $out + + if (scala_assert "drumb.scala" "../drumb_test1.scala") + then + echo " --> success" | tee -a $out + marks=$(( marks + 1 )) + else + echo " --> test failed" | tee -a $out + fi +fi + +### get_deltas_test + +if [ $tsts -eq 0 ] +then + echo " get_deltas(get_prices(List(\"IBM\", \"BIDU\"), 2004 to 2008)) = " | tee -a $out + echo " List(List(Some(0.07596697626574789), None), " | tee -a $out + echo " List(Some(-0.152620823795232), None)," | tee -a $out + echo " List(Some(0.20126676681483952), Some(0.9277165354330709))," | tee -a $out + echo " List(Some(0.09141762603007778), Some(2.119679764725104)))" | tee -a $out + + if (scala_assert "drumb.scala" "../drumb_test2.scala") + then + echo " --> success" | tee -a $out + marks=$(( marks + 1 )) + else + echo " --> test failed" | tee -a $out + fi +fi + +### yield_tests, investmetn_test + +if [ $tsts -eq 0 ] +then + echo " yearly_yield(IBM + BIDU, 04 - 08, 100, 0) - 107).abs <= 2 " | tee -a $out + echo " yearly_yield(IBM + BIDU, 04 - 08, 100, 1) - 85).abs <= 2 " | tee -a $out + echo " yearly_yield(IBM + BIDU, 04 - 08, 100, 2) - 156).abs <= 2 " | tee -a $out + echo " yearly_yield(IBM + BIDU, 04 - 08, 100, 3) - 210).abs <= 2 " | tee -a $out + echo " investment(List(\"IBM\", \"BIDU\"), 2004 to 2008, 100) - 298).abs <= 10" | tee -a $out + + if (scala_assert "drumb.scala" "../drumb_test3.scala") + then + echo " --> success" | tee -a $out + marks=$(( marks + 1 )) + else + echo " --> test failed" | tee -a $out + fi +fi + +## final marks +echo "Overall mark for CW 1, Part 3:" | tee -a $out +echo "$marks" | tee -a $out diff -r ff8d075842d5 -r 28c8e17ab83a progs/drumb_sol.scala --- a/progs/drumb_sol.scala Thu Dec 01 22:08:00 2016 +0000 +++ b/progs/drumb_sol.scala Fri Dec 02 16:45:31 2016 +0000 @@ -45,7 +45,7 @@ val p_fb = get_prices(List("FB"), 2012 to 2014) val p = get_prices(List("GOOG", "AAPL"), 2005 to 2012) -get_prices(List("BIDU"), 2004 to 2008) +val tt = get_prices(List("IBM", "BIDU"), 2004 to 2008) // (2) The first function below calculates the change factor (delta) between // a price in year n and a price in year n+1. The second function calculates @@ -65,7 +65,7 @@ // test case using the prices calculated above val d = get_deltas(p) - +val ttd = get_deltas(tt) // (3) Write a function that given change factors, a starting balance and a year // calculates the yearly yield, i.e. new balanace, according to our dump investment @@ -85,6 +85,16 @@ } } +yearly_yield(ttd, 100, 0) +yearly_yield(ttd, 100, 1) +yearly_yield(ttd, 100, 2) +yearly_yield(ttd, 100, 3) assert((yearly_yield(ttd, 100, 0) - 107).abs <= 2) + assert((yearly_yield(ttd, 100, 1) - 85).abs <= 2) + assert((yearly_yield(ttd, 100, 2) - 156).abs <= 2) + assert((yearly_yield(ttd, 100, 3) - 210).abs <= 2) + + + //test case yearly_yield(d, 100, 0) yearly_yield(d, 225, 1) @@ -116,6 +126,9 @@ println("Real data: " + investment(rstate_portfolio, 1978 to 2016, 100)) println("Blue data: " + investment(blchip_portfolio, 1978 to 2016, 100)) + +investment(List("IBM", "BIDU"), 2004 to 2008, 100) + val p_fb = get_prices(List("FB"), 2011 to 2016) // prices 2011 - 2016