99 lines
5.6 KiB
HTML
99 lines
5.6 KiB
HTML
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<link rel="stylesheet" href="../coverage.css"/> <title> walkmap/path.clj </title>
|
|
</head>
|
|
<body>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
001 (ns walkmap.path
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
002 "Essentially the specification for things we shall consider to be path."
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
003 (:require [walkmap.polygon :refer [polygon?]]
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
004 [walkmap.vertex :refer [vertex?]]))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
005
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
006 (defn path?
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
007 "True if `o` satisfies the conditions for a path. A path shall be a map
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
008 having the key `:nodes`, whose value shall be a sequence of vertices as
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
009 defined in `walkmap.vertex`."
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
010 [o]
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 1 forms covered">
|
|
011 (let
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
012 [v (:nodes o)]
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 9 forms covered">
|
|
013 (and
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
014 (seq? v)
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 6 forms covered">
|
|
015 (> (count v) 2)
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
016 (every? vertex? v))))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
017
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
018 (defn polygon->path
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
019 "If `o` is a polygon, return an equivalent path. What's different about
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
020 a path is that in polygons there is an implicit edge between the first
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
021 vertex and the last. In paths, there isn't, so we need to add that
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
022 edge explicitly.
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
023
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
024 If `o` is not a polygon, will throw an exception."
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
025 [o]
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 1 forms covered">
|
|
026 (if
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
027 (polygon? o)
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 19 forms covered">
|
|
028 (assoc (dissoc o :vertices) :nodes (concat (:vertices o) (list (first (:vertices o)))))
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
029 (throw (Exception. "Not a polygon!"))))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
030
|
|
</span><br/>
|
|
</body>
|
|
</html>
|