Informatika2-2012/Gyakorlat11

A MathWikiből
(Változatok közti eltérés)
(Új oldal, tartalma: „== Keresés == Egészítsd ki a jegyzettömböt úgy hogy a jegyzetek tartalmára keresni lehessen. == Kivételek == Egészítsük ki a jegyzettömb implementációnka…”)
 
(megoldás)
 
(egy szerkesztő 6 közbeeső változata nincs mutatva)
1. sor: 1. sor:
 +
=== megoldás ===
 +
A unittest-es részeket nem tartalmazza, az csak kitérőként volt bemutatva...
 +
 +
[http://wiki.math.bme.hu/view/Informatika2-2012/Gyakorlat11m itt látható]
 +
 
== Keresés ==
 
== Keresés ==
 
Egészítsd ki a jegyzettömböt úgy hogy a jegyzetek tartalmára keresni lehessen.
 
Egészítsd ki a jegyzettömböt úgy hogy a jegyzetek tartalmára keresni lehessen.
14. sor: 19. sor:
 
* stb.
 
* stb.
  
unittest használata:
+
unittest használata [http://docs.python.org/library/unittest.html manual]:
 
<python>
 
<python>
 
import random
 
import random
23. sor: 28. sor:
 
     def setUp(self):
 
     def setUp(self):
 
         self.seq = range(10)
 
         self.seq = range(10)
 +
 +
    def tearDown(self):
 +
        pass
 +
 +
#    def runTest(self):
 +
#        pass
  
 
     def test_shuffle(self):
 
     def test_shuffle(self):
49. sor: 60. sor:
 
suite = unittest.TestLoader().loadTestsFromTestCase(TestSequenceFunctions)
 
suite = unittest.TestLoader().loadTestsFromTestCase(TestSequenceFunctions)
 
unittest.TextTestRunner(verbosity=2).run(suite)
 
unittest.TextTestRunner(verbosity=2).run(suite)
 +
</python>
 +
 
<python>
 
<python>
 +
Method Checks that New in
 +
assertEqual(a, b) a == b
 +
assertNotEqual(a, b) a != b
 +
assertTrue(x) bool(x) is True
 +
assertFalse(x) bool(x) is False
 +
assertIs(a, b) a is b 2.7
 +
assertIsNot(a, b) a is not b 2.7
 +
assertIsNone(x) x is None 2.7
 +
assertIsNotNone(x) x is not None 2.7
 +
assertIn(a, b) a in b 2.7
 +
assertNotIn(a, b) a not in b 2.7
 +
assertIsInstance(a, b) isinstance(a, b) 2.7
 +
assertNotIsInstance(a, b) not isinstance(a, b) 2.7
 +
assertRaises(exc, fun, *args, **kwds) fun(*args, **kwds) raises exc
 +
assertRaisesRegexp(exc, re, fun, *args, **kwds) fun(*args, **kwds) raises exc and the message matches re 2.7
 +
assertAlmostEqual(a, b) round(a-b, 7) == 0
 +
assertNotAlmostEqual(a, b) round(a-b, 7) != 0
 +
assertGreater(a, b) a > b 2.7
 +
assertGreaterEqual(a, b) a >= b 2.7
 +
assertLess(a, b) a < b 2.7
 +
assertLessEqual(a, b) a <= b 2.7
 +
assertRegexpMatches(s, re) regex.search(s) 2.7
 +
assertNotRegexpMatches(s, re) not regex.search(s) 2.7
 +
assertItemsEqual(a, b) sorted(a) == sorted(b) and works with unhashable objs 2.7
 +
assertDictContainsSubset(a, b) all the key/value pairs in a exist in b 2.7
 +
assertMultiLineEqual(a, b) strings 2.7
 +
assertSequenceEqual(a, b) sequences 2.7
 +
assertListEqual(a, b) lists 2.7
 +
assertTupleEqual(a, b) tuples 2.7
 +
assertSetEqual(a, b) sets or frozensets 2.7
 +
assertDictEqual(a, b) dicts 2.7
 +
</python>
  
 
== Mentés, visszatöltés ==
 
== Mentés, visszatöltés ==

A lap jelenlegi, 2012. május 1., 14:22-kori változata

Tartalomjegyzék

megoldás

A unittest-es részeket nem tartalmazza, az csak kitérőként volt bemutatva...

itt látható

Keresés

Egészítsd ki a jegyzettömböt úgy hogy a jegyzetek tartalmára keresni lehessen.

Kivételek

Egészítsük ki a jegyzettömb implementációnkat, hogy ha a jegyzettömb konstruktora nem megfelelő típust kap akkor TypeError adjon vissza. Írjunk saját kivételt ami leszármazik TypeError-tól és ha a jegyzet üresen szeretnék létrehozni akkor dobjunk ilyen kivételt.

Unittest

írj testeket a jegyzettombre. pl.:

  • jol mukodik-e az add?
  • a konstruktor dobja-e a kivételt ha rosszul hivjak
  • stb.

unittest használata manual:

import random
import unittest
 
class TestSequenceFunctions(unittest.TestCase):
 
    def setUp(self):
        self.seq = range(10)
 
    def tearDown(self):
        pass
 
#    def runTest(self):
#        pass
 
    def test_shuffle(self):
        # make sure the shuffled sequence does not lose any elements
        random.shuffle(self.seq)
        self.seq.sort()
        self.assertEqual(self.seq, range(10))
 
        # should raise an exception for an immutable sequence
        self.assertRaises(TypeError, random.shuffle, (1,2,3))
 
    def test_choice(self):
        element = random.choice(self.seq)
        self.assertTrue(element in self.seq)
 
    def test_sample(self):
        with self.assertRaises(ValueError):
            random.sample(self.seq, 20)
        for element in random.sample(self.seq, 5):
            self.assertTrue(element in self.seq)
 
# command line test run
#if __name__ == '__main__':
#    unittest.main()
 
suite = unittest.TestLoader().loadTestsFromTestCase(TestSequenceFunctions)
unittest.TextTestRunner(verbosity=2).run(suite)
Method	Checks that	New in
assertEqual(a, b)	a == b	 
assertNotEqual(a, b)	a != b	 
assertTrue(x)	bool(x) is True	 
assertFalse(x)	bool(x) is False	 
assertIs(a, b)	a is b	2.7
assertIsNot(a, b)	a is not b	2.7
assertIsNone(x)	x is None	2.7
assertIsNotNone(x)	x is not None	2.7
assertIn(a, b)	a in b	2.7
assertNotIn(a, b)	a not in b	2.7
assertIsInstance(a, b)	isinstance(a, b)	2.7
assertNotIsInstance(a, b)	not isinstance(a, b)	2.7
assertRaises(exc, fun, *args, **kwds)	fun(*args, **kwds) raises exc	 
assertRaisesRegexp(exc, re, fun, *args, **kwds)	fun(*args, **kwds) raises exc and the message matches re	2.7
assertAlmostEqual(a, b)	round(a-b, 7) == 0	 
assertNotAlmostEqual(a, b)	round(a-b, 7) != 0	 
assertGreater(a, b)	a > b	2.7
assertGreaterEqual(a, b)	a >= b	2.7
assertLess(a, b)	a < b	2.7
assertLessEqual(a, b)	a <= b	2.7
assertRegexpMatches(s, re)	regex.search(s)	2.7
assertNotRegexpMatches(s, re)	not regex.search(s)	2.7
assertItemsEqual(a, b)	sorted(a) == sorted(b) and works with unhashable objs	2.7
assertDictContainsSubset(a, b)	all the key/value pairs in a exist in b	2.7
assertMultiLineEqual(a, b)	strings	2.7
assertSequenceEqual(a, b)	sequences	2.7
assertListEqual(a, b)	lists	2.7
assertTupleEqual(a, b)	tuples	2.7
assertSetEqual(a, b)	sets or frozensets	2.7
assertDictEqual(a, b)	dicts	2.7

Mentés, visszatöltés

jegyzettomb kiegészítése mentés funkcióval, hogy ha később indításkor a meglévő jegyzeteket vissza tudjuk olvasni.

Menü

Csináljunk kezdetleges menüt a jegyzetek, jegyzettömbök kezelésére. A programot próbáljuk osztályokba szervezni!

Személyes eszközök